]> Cypherpunks.ru repositories - nncp.git/blobdiff - src/cmd/nncp-bundle/main.go
Remove huge usage headers, -warranty exists anyway
[nncp.git] / src / cmd / nncp-bundle / main.go
index def4f86d01250325aae5e88babd591a92a7df90b..8c5e7a2a98bf0d0585678bebc4a859420339ceb5 100644 (file)
@@ -1,6 +1,6 @@
 /*
 NNCP -- Node to Node copy, utilities for store-and-forward data exchange
-Copyright (C) 2016-2021 Sergey Matveev <stargrave@stargrave.org>
+Copyright (C) 2016-2023 Sergey Matveev <stargrave@stargrave.org>
 
 This program is free software: you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
@@ -26,7 +26,7 @@ import (
        "flag"
        "fmt"
        "io"
-       "io/ioutil"
+       "io/fs"
        "log"
        "os"
        "path/filepath"
@@ -37,13 +37,8 @@ import (
        "go.cypherpunks.ru/nncp/v8"
 )
 
-const (
-       CopyBufSize = 1 << 17
-)
-
 func usage() {
-       fmt.Fprintf(os.Stderr, nncp.UsageHeader())
-       fmt.Fprintf(os.Stderr, "nncp-bundle -- Create/digest stream of NNCP encrypted packets\n\n")
+       fmt.Fprint(os.Stderr, "nncp-bundle -- Create/digest stream of NNCP encrypted packets\n\n")
        fmt.Fprintf(os.Stderr, "Usage: %s [options] -tx [-delete] NODE [NODE ...] > ...\n", os.Args[0])
        fmt.Fprintf(os.Stderr, "       %s [options] -rx -delete [-dryrun] [NODE ...] < ...\n", os.Args[0])
        fmt.Fprintf(os.Stderr, "       %s [options] -rx [-check] [-dryrun] [NODE ...] < ...\n", os.Args[0])
@@ -165,7 +160,7 @@ func main() {
                                        log.Fatalln("Error writing tar header:", err)
                                }
                                if _, err = nncp.CopyProgressed(
-                                       tarWr, bufio.NewReader(fd), "Tx",
+                                       tarWr, bufio.NewReaderSize(fd, nncp.MTHBlockSize), "Tx",
                                        append(les, nncp.LEs{
                                                {K: "Pkt", V: nncp.Base32Codec.EncodeToString(job.HshValue[:])},
                                                {K: "FullSize", V: job.Size},
@@ -208,11 +203,11 @@ func main() {
                        log.Fatalln("Error during tar closing:", err)
                }
        } else {
-               bufStdin := bufio.NewReaderSize(os.Stdin, CopyBufSize*2)
+               bufStdin := bufio.NewReaderSize(os.Stdin, nncp.MTHBlockSize*2)
                pktEncBuf := make([]byte, nncp.PktEncOverhead)
                var pktEnc *nncp.PktEnc
                for {
-                       peeked, err := bufStdin.Peek(CopyBufSize)
+                       peeked, err := bufStdin.Peek(nncp.MTHBlockSize)
                        if err != nil && err != io.EOF {
                                log.Fatalln("Error during reading:", err)
                        }
@@ -316,6 +311,8 @@ func main() {
                        case nncp.MagicNNCPEv4.B:
                                err = nncp.MagicNNCPEv4.TooOld()
                        case nncp.MagicNNCPEv5.B:
+                               err = nncp.MagicNNCPEv5.TooOld()
+                       case nncp.MagicNNCPEv6.B:
                        default:
                                err = errors.New("Bad packet magic number")
                        }
@@ -410,7 +407,7 @@ func main() {
                        }
                        dstDirPath := filepath.Join(ctx.Spool, sender, string(nncp.TRx))
                        dstPath := filepath.Join(dstDirPath, pktName)
-                       if _, err = os.Stat(dstPath); err == nil || !os.IsNotExist(err) {
+                       if _, err = os.Stat(dstPath); err == nil || !errors.Is(err, fs.ErrNotExist) {
                                ctx.LogD("bundle-rx-exists", les, func(les nncp.LEs) string {
                                        return logMsg(les) + ": packet already exists"
                                })
@@ -418,7 +415,7 @@ func main() {
                        }
                        if _, err = os.Stat(filepath.Join(
                                dstDirPath, nncp.SeenDir, pktName,
-                       )); err == nil || !os.IsNotExist(err) {
+                       )); err == nil || !errors.Is(err, fs.ErrNotExist) {
                                ctx.LogD("bundle-rx-seen", les, func(les nncp.LEs) string {
                                        return logMsg(les) + ": packet already seen"
                                })
@@ -463,7 +460,7 @@ func main() {
                                }
                        } else {
                                if *dryRun {
-                                       if _, err = nncp.CopyProgressed(ioutil.Discard, tarR, "Rx", les, ctx.ShowPrgrs); err != nil {
+                                       if _, err = nncp.CopyProgressed(io.Discard, tarR, "Rx", les, ctx.ShowPrgrs); err != nil {
                                                log.Fatalln("Error during copying:", err)
                                        }
                                } else {
@@ -471,7 +468,7 @@ func main() {
                                        if err != nil {
                                                log.Fatalln("Error during temporary file creation:", err)
                                        }
-                                       bufTmp := bufio.NewWriterSize(tmp, CopyBufSize)
+                                       bufTmp := bufio.NewWriterSize(tmp, nncp.MTHBlockSize)
                                        if _, err = bufTmp.Write(pktEncBuf); err != nil {
                                                log.Fatalln("Error during writing:", err)
                                        }
@@ -481,8 +478,10 @@ func main() {
                                        if err = bufTmp.Flush(); err != nil {
                                                log.Fatalln("Error during flushing:", err)
                                        }
-                                       if err = tmp.Sync(); err != nil {
-                                               log.Fatalln("Error during syncing:", err)
+                                       if !nncp.NoSync {
+                                               if err = tmp.Sync(); err != nil {
+                                                       log.Fatalln("Error during syncing:", err)
+                                               }
                                        }
                                        if err = tmp.Close(); err != nil {
                                                log.Fatalln("Error during closing:", err)