X-Git-Url: http://www.git.cypherpunks.ru/?a=blobdiff_plain;f=src%2Fcmd%2Fnncp-bundle%2Fmain.go;h=8c5e7a2a98bf0d0585678bebc4a859420339ceb5;hb=7c507e7ddba9fe5557df06c860fe9fa6197ba2e1;hp=52ce4f61fe0eb1016d8effa4118d68718033eff4;hpb=712399b4547bd499528a20209d469b2eb1aaff28;p=nncp.git diff --git a/src/cmd/nncp-bundle/main.go b/src/cmd/nncp-bundle/main.go index 52ce4f6..8c5e7a2 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" @@ -34,16 +34,11 @@ import ( xdr "github.com/davecgh/go-xdr/xdr2" "github.com/dustin/go-humanize" - "go.cypherpunks.ru/nncp/v7" -) - -const ( - CopyBufSize = 1 << 17 + "go.cypherpunks.ru/nncp/v8" ) 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)