]> Cypherpunks.ru repositories - nncp.git/blobdiff - src/cmd/nncp-reass/main.go
Fixed nncp-reass's badSize calculation
[nncp.git] / src / cmd / nncp-reass / main.go
index f4c1381801260b88909616a6fb56346e9bd5a361..e92a2e59307f1d5f2c5580d5d8992053106cb0a6 100644 (file)
@@ -27,6 +27,7 @@ import (
        "fmt"
        "hash"
        "io"
+       "io/fs"
        "log"
        "os"
        "path/filepath"
@@ -115,7 +116,7 @@ func process(ctx *nncp.Ctx, path string, keep, dryRun, stdout, dumpMeta bool) bo
        for chunkNum, chunkPath := range chunksPaths {
                fi, err := os.Stat(chunkPath)
                lesChunk := append(les, nncp.LE{K: "Chunk", V: chunkNum})
-               if err != nil && os.IsNotExist(err) {
+               if err != nil && errors.Is(err, fs.ErrNotExist) {
                        ctx.LogI("reass-chunk-miss", lesChunk, func(les nncp.LEs) string {
                                return fmt.Sprintf("%s: chunk %d missing", logMsg(les), chunkNum)
                        })
@@ -124,7 +125,8 @@ func process(ctx *nncp.Ctx, path string, keep, dryRun, stdout, dumpMeta bool) bo
                }
                var badSize bool
                if chunkNum+1 == len(chunksPaths) {
-                       badSize = uint64(fi.Size()) != metaPkt.FileSize%metaPkt.ChunkSize
+                       left := metaPkt.FileSize % metaPkt.ChunkSize
+                       badSize = left != 0 && uint64(fi.Size()) != left
                } else {
                        badSize = uint64(fi.Size()) != metaPkt.ChunkSize
                }
@@ -269,7 +271,7 @@ func process(ctx *nncp.Ctx, path string, keep, dryRun, stdout, dumpMeta bool) bo
        dstPathCtr := 0
        for {
                if _, err = os.Stat(dstPath); err != nil {
-                       if os.IsNotExist(err) {
+                       if errors.Is(err, fs.ErrNotExist) {
                                break
                        }
                        log.Fatalln(err)