]> Cypherpunks.ru repositories - nncp.git/blobdiff - src/cmd/nncp-reass/main.go
Use bytes.Equal() instead of bytes.Compare()==0
[nncp.git] / src / cmd / nncp-reass / main.go
index d7774c95bd2fb718136d62b8a43dff5e1b8f1561..3961449cfa78df112f815ef77f91c24fd189260d 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
@@ -35,12 +35,12 @@ import (
 
        xdr "github.com/davecgh/go-xdr/xdr2"
        "github.com/dustin/go-humanize"
-       "go.cypherpunks.ru/nncp/v7"
+       "go.cypherpunks.ru/nncp/v8"
 )
 
 func usage() {
-       fmt.Fprintf(os.Stderr, nncp.UsageHeader())
-       fmt.Fprintf(os.Stderr, "nncp-reass -- reassemble chunked files\n\n")
+       fmt.Fprint(os.Stderr, nncp.UsageHeader())
+       fmt.Fprint(os.Stderr, "nncp-reass -- reassemble chunked files\n\n")
        fmt.Fprintf(os.Stderr, "Usage: %s [options] [FILE.nncp.meta]\nOptions:\n", os.Args[0])
        flag.PrintDefaults()
        fmt.Fprint(os.Stderr, `
@@ -66,7 +66,7 @@ func process(ctx *nncp.Ctx, path string, keep, dryRun, stdout, dumpMeta bool) bo
                })
                return false
        }
-       fd.Close() // #nosec G104
+       fd.Close()
        if metaPkt.Magic == nncp.MagicNNCPMv1.B {
                ctx.LogE("reass", les, nncp.MagicNNCPMv1.TooOld(), logMsg)
                return false
@@ -157,14 +157,14 @@ func process(ctx *nncp.Ctx, path string, keep, dryRun, stdout, dumpMeta bool) bo
                }
                hsh = nncp.MTHNew(fi.Size(), 0)
                if _, err = nncp.CopyProgressed(
-                       hsh, bufio.NewReader(fd), "check",
+                       hsh, bufio.NewReaderSize(fd, nncp.MTHBlockSize), "check",
                        nncp.LEs{{K: "Pkt", V: chunkPath}, {K: "FullSize", V: fi.Size()}},
                        ctx.ShowPrgrs,
                ); err != nil {
                        log.Fatalln(err)
                }
-               fd.Close() // #nosec G104
-               if bytes.Compare(hsh.Sum(nil), metaPkt.Checksums[chunkNum][:]) != 0 {
+               fd.Close()
+               if !bytes.Equal(hsh.Sum(nil), metaPkt.Checksums[chunkNum][:]) {
                        ctx.LogE(
                                "reass-chunk",
                                nncp.LEs{{K: "Path", V: path}, {K: "Chunk", V: chunkNum}},
@@ -213,13 +213,13 @@ func process(ctx *nncp.Ctx, path string, keep, dryRun, stdout, dumpMeta bool) bo
                        log.Fatalln("Can not stat file:", err)
                }
                if _, err = nncp.CopyProgressed(
-                       dstW, bufio.NewReader(fd), "reass",
+                       dstW, bufio.NewReaderSize(fd, nncp.MTHBlockSize), "reass",
                        nncp.LEs{{K: "Pkt", V: chunkPath}, {K: "FullSize", V: fi.Size()}},
                        ctx.ShowPrgrs,
                ); err != nil {
                        log.Fatalln(err)
                }
-               fd.Close() // #nosec G104
+               fd.Close()
                if !keep {
                        if err = os.Remove(chunkPath); err != nil {
                                ctx.LogE(
@@ -237,8 +237,10 @@ func process(ctx *nncp.Ctx, path string, keep, dryRun, stdout, dumpMeta bool) bo
                log.Fatalln("Can not flush:", err)
        }
        if tmp != nil {
-               if err = tmp.Sync(); err != nil {
-                       log.Fatalln("Can not sync:", err)
+               if !nncp.NoSync {
+                       if err = tmp.Sync(); err != nil {
+                               log.Fatalln("Can not sync:", err)
+                       }
                }
                if err = tmp.Close(); err != nil {
                        log.Fatalln("Can not close:", err)
@@ -298,7 +300,7 @@ func findMetas(ctx *nncp.Ctx, dirPath string) []string {
                return nil
        }
        fis, err := dir.Readdir(0)
-       dir.Close() // #nosec G104
+       dir.Close()
        if err != nil {
                ctx.LogE("reass", nncp.LEs{{K: "Path", V: dirPath}}, err, logMsg)
                return nil