X-Git-Url: http://www.git.cypherpunks.ru/?a=blobdiff_plain;f=src%2Fcmd%2Fnncp-bundle%2Fmain.go;h=6fa0ab3642489d76fa04cf22d693c73c45f31cb1;hb=72f42f8288689ae89e021ba33ebca8d551a784d7;hp=def4f86d01250325aae5e88babd591a92a7df90b;hpb=a43910e6e9940fe088c38ec849bc983b54335d45;p=nncp.git diff --git a/src/cmd/nncp-bundle/main.go b/src/cmd/nncp-bundle/main.go index def4f86..6fa0ab3 100644 --- a/src/cmd/nncp-bundle/main.go +++ b/src/cmd/nncp-bundle/main.go @@ -1,6 +1,6 @@ /* NNCP -- Node to Node copy, utilities for store-and-forward data exchange -Copyright (C) 2016-2021 Sergey Matveev +Copyright (C) 2016-2023 Sergey Matveev 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,9 @@ 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.UsageHeader()) + 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 +161,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 +204,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 +312,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 +408,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 +416,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 +461,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 +469,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 +479,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)