]> Cypherpunks.ru repositories - nncp.git/blobdiff - src/cmd/nncp-reass/main.go
Too early defers
[nncp.git] / src / cmd / nncp-reass / main.go
index 492ef25515d2026d3fff8f5eb82470036268d464..f4c1381801260b88909616a6fb56346e9bd5a361 100644 (file)
@@ -39,8 +39,8 @@ import (
 )
 
 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, `
@@ -51,10 +51,10 @@ but at least one of them must be specified.
 
 func process(ctx *nncp.Ctx, path string, keep, dryRun, stdout, dumpMeta bool) bool {
        fd, err := os.Open(path)
-       defer fd.Close()
        if err != nil {
                log.Fatalln("Can not open file:", err)
        }
+       defer fd.Close()
        var metaPkt nncp.ChunkedMeta
        les := nncp.LEs{{K: "Path", V: path}}
        logMsg := func(les nncp.LEs) string {
@@ -164,7 +164,7 @@ func process(ctx *nncp.Ctx, path string, keep, dryRun, stdout, dumpMeta bool) bo
                        log.Fatalln(err)
                }
                fd.Close()
-               if bytes.Compare(hsh.Sum(nil), metaPkt.Checksums[chunkNum][:]) != 0 {
+               if !bytes.Equal(hsh.Sum(nil), metaPkt.Checksums[chunkNum][:]) {
                        ctx.LogE(
                                "reass-chunk",
                                nncp.LEs{{K: "Path", V: path}, {K: "Chunk", V: chunkNum}},
@@ -291,7 +291,6 @@ func process(ctx *nncp.Ctx, path string, keep, dryRun, stdout, dumpMeta bool) bo
 
 func findMetas(ctx *nncp.Ctx, dirPath string) []string {
        dir, err := os.Open(dirPath)
-       defer dir.Close()
        logMsg := func(les nncp.LEs) string {
                return "Finding .meta in " + dirPath
        }
@@ -299,6 +298,7 @@ func findMetas(ctx *nncp.Ctx, dirPath string) []string {
                ctx.LogE("reass", nncp.LEs{{K: "Path", V: dirPath}}, err, logMsg)
                return nil
        }
+       defer dir.Close()
        fis, err := dir.Readdir(0)
        dir.Close()
        if err != nil {