]> Cypherpunks.ru repositories - nncp.git/blobdiff - src/cmd/nncp-xfer/main.go
recfile log format
[nncp.git] / src / cmd / nncp-xfer / main.go
index 50e9bf416fb63ce80a8debf0460f85d83d166982..06db800fc7588e427d9190be4e4de89af12b2d47 100644 (file)
@@ -105,32 +105,34 @@ func main() {
        isBad := false
        var dir *os.File
        var fis []os.FileInfo
-       sds := nncp.SDS{}
+       var les nncp.LEs
        if *txOnly {
                goto Tx
        }
-       sds["xx"] = string(nncp.TRx)
-       sds["dir"] = selfPath
-       ctx.LogD("nncp-xfer", sds, "self")
+       les = nncp.LEs{
+               {K: "XX", V: string(nncp.TRx)},
+               {K: "Dir", V: selfPath},
+       }
+       ctx.LogD("nncp-xfer", les, "self")
        if _, err = os.Stat(selfPath); err != nil {
                if os.IsNotExist(err) {
-                       ctx.LogD("nncp-xfer", sds, "no dir")
+                       ctx.LogD("nncp-xfer", les, "no dir")
                        goto Tx
                }
-               ctx.LogE("nncp-xfer", sds, err, "stat")
+               ctx.LogE("nncp-xfer", les, err, "stat")
                isBad = true
                goto Tx
        }
        dir, err = os.Open(selfPath)
        if err != nil {
-               ctx.LogE("nncp-xfer", sds, err, "open")
+               ctx.LogE("nncp-xfer", les, err, "open")
                isBad = true
                goto Tx
        }
        fis, err = dir.Readdir(0)
        dir.Close() // #nosec G104
        if err != nil {
-               ctx.LogE("nncp-xfer", sds, err, "read")
+               ctx.LogE("nncp-xfer", les, err, "read")
                isBad = true
                goto Tx
        }
@@ -139,29 +141,29 @@ func main() {
                        continue
                }
                nodeId, err := nncp.NodeIdFromString(fi.Name())
-               sds["node"] = fi.Name()
+               les := append(les, nncp.LE{K: "Node", V: fi.Name()})
                if err != nil {
-                       ctx.LogD("nncp-xfer", sds, "is not NodeId")
+                       ctx.LogD("nncp-xfer", les, "is not NodeId")
                        continue
                }
                if nodeOnly != nil && *nodeId != *nodeOnly.Id {
-                       ctx.LogD("nncp-xfer", sds, "skip")
+                       ctx.LogD("nncp-xfer", les, "skip")
                        continue
                }
                if _, known := ctx.Neigh[*nodeId]; !known {
-                       ctx.LogD("nncp-xfer", sds, "unknown")
+                       ctx.LogD("nncp-xfer", les, "unknown")
                        continue
                }
                dir, err = os.Open(filepath.Join(selfPath, fi.Name()))
                if err != nil {
-                       ctx.LogE("nncp-xfer", sds, err, "open")
+                       ctx.LogE("nncp-xfer", les, err, "open")
                        isBad = true
                        continue
                }
                fisInt, err := dir.Readdir(0)
                dir.Close() // #nosec G104
                if err != nil {
-                       ctx.LogE("nncp-xfer", sds, err, "read")
+                       ctx.LogE("nncp-xfer", les, err, "read")
                        isBad = true
                        continue
                }
@@ -174,29 +176,28 @@ func main() {
                                continue
                        }
                        filename := filepath.Join(dir.Name(), fiInt.Name())
-                       sds["file"] = filename
-                       delete(sds, "size")
+                       les := append(les, nncp.LE{K: "File", V: filename})
                        fd, err := os.Open(filename)
                        if err != nil {
-                               ctx.LogE("nncp-xfer", sds, err, "open")
+                               ctx.LogE("nncp-xfer", les, err, "open")
                                isBad = true
                                continue
                        }
                        var pktEnc nncp.PktEnc
                        _, err = xdr.Unmarshal(fd, &pktEnc)
                        if err != nil || pktEnc.Magic != nncp.MagicNNCPEv4 {
-                               ctx.LogD("nncp-xfer", sds, "is not a packet")
+                               ctx.LogD("nncp-xfer", les, "is not a packet")
                                fd.Close() // #nosec G104
                                continue
                        }
                        if pktEnc.Nice > nice {
-                               ctx.LogD("nncp-xfer", sds, "too nice")
+                               ctx.LogD("nncp-xfer", les, "too nice")
                                fd.Close() // #nosec G104
                                continue
                        }
-                       sds["size"] = fiInt.Size()
+                       les = append(les, nncp.LE{K: "Size", V: fiInt.Size()})
                        if !ctx.IsEnoughSpace(fiInt.Size()) {
-                               ctx.LogE("nncp-xfer", sds, errors.New("is not enough space"), "")
+                               ctx.LogE("nncp-xfer", les, errors.New("is not enough space"), "")
                                fd.Close() // #nosec G104
                                continue
                        }
@@ -214,19 +215,19 @@ func main() {
                                        err = w.Close()
                                }
                                if err != nil {
-                                       ctx.LogE("nncp-xfer", sds, err, "copy")
+                                       ctx.LogE("nncp-xfer", les, err, "copy")
                                        w.CloseWithError(err) // #nosec G104
                                }
                        }()
                        if _, err = nncp.CopyProgressed(
                                tmp.W, r, "Rx",
-                               nncp.SdsAdd(sds, nncp.SDS{
-                                       "pkt":      filename,
-                                       "fullsize": sds["size"],
-                               }),
+                               append(les, nncp.LEs{
+                                       {K: "Pkt", V: filename},
+                                       {K: "FullSize", V: fiInt.Size()},
+                               }...),
                                ctx.ShowPrgrs,
                        ); err != nil {
-                               ctx.LogE("nncp-xfer", sds, err, "copy")
+                               ctx.LogE("nncp-xfer", les, err, "copy")
                                isBad = true
                        }
                        fd.Close() // #nosec G104
@@ -241,10 +242,10 @@ func main() {
                        )); err != nil {
                                log.Fatalln(err)
                        }
-                       ctx.LogI("nncp-xfer", sds, "")
+                       ctx.LogI("nncp-xfer", les, "")
                        if !*keep {
                                if err = os.Remove(filename); err != nil {
-                                       ctx.LogE("nncp-xfer", sds, err, "remove")
+                                       ctx.LogE("nncp-xfer", les, err, "remove")
                                        isBad = true
                                }
                        }
@@ -258,11 +259,13 @@ Tx:
                }
                return
        }
-       sds["xx"] = string(nncp.TTx)
-       for nodeId, _ := range ctx.Neigh {
-               sds["node"] = nodeId
+       for nodeId := range ctx.Neigh {
+               les := nncp.LEs{
+                       {K: "XX", V: string(nncp.TTx)},
+                       {K: "Node", V: nodeId},
+               }
                if nodeOnly != nil && nodeId != *nodeOnly.Id {
-                       ctx.LogD("nncp-xfer", sds, "skip")
+                       ctx.LogD("nncp-xfer", les, "skip")
                        continue
                }
                dirLock, err := ctx.LockDir(&nodeId, string(nncp.TTx))
@@ -270,118 +273,118 @@ Tx:
                        continue
                }
                nodePath := filepath.Join(flag.Arg(0), nodeId.String())
-               sds["dir"] = nodePath
+               les = append(les, nncp.LE{K: "Dir", V: nodePath})
                _, err = os.Stat(nodePath)
                if err != nil {
                        if os.IsNotExist(err) {
-                               ctx.LogD("nncp-xfer", sds, "does not exist")
+                               ctx.LogD("nncp-xfer", les, "does not exist")
                                if !*mkdir {
                                        ctx.UnlockDir(dirLock)
                                        continue
                                }
                                if err = os.Mkdir(nodePath, os.FileMode(0777)); err != nil {
                                        ctx.UnlockDir(dirLock)
-                                       ctx.LogE("nncp-xfer", sds, err, "mkdir")
+                                       ctx.LogE("nncp-xfer", les, err, "mkdir")
                                        isBad = true
                                        continue
                                }
                        } else {
                                ctx.UnlockDir(dirLock)
-                               ctx.LogE("nncp-xfer", sds, err, "stat")
+                               ctx.LogE("nncp-xfer", les, err, "stat")
                                isBad = true
                                continue
                        }
                }
                dstPath := filepath.Join(nodePath, ctx.SelfId.String())
-               sds["dir"] = dstPath
+               les[len(les)-1].V = dstPath
                _, err = os.Stat(dstPath)
                if err != nil {
                        if os.IsNotExist(err) {
                                if err = os.Mkdir(dstPath, os.FileMode(0777)); err != nil {
                                        ctx.UnlockDir(dirLock)
-                                       ctx.LogE("nncp-xfer", sds, err, "mkdir")
+                                       ctx.LogE("nncp-xfer", les, err, "mkdir")
                                        isBad = true
                                        continue
                                }
                        } else {
                                ctx.UnlockDir(dirLock)
-                               ctx.LogE("nncp-xfer", sds, err, "stat")
+                               ctx.LogE("nncp-xfer", les, err, "stat")
                                isBad = true
                                continue
                        }
                }
-               delete(sds, "dir")
+               les = les[:len(les)-1]
                for job := range ctx.Jobs(&nodeId, nncp.TTx) {
                        pktName := filepath.Base(job.Fd.Name())
-                       sds["pkt"] = pktName
+                       les := append(les, nncp.LE{K: "Pkt", V: pktName})
                        if job.PktEnc.Nice > nice {
-                               ctx.LogD("nncp-xfer", sds, "too nice")
+                               ctx.LogD("nncp-xfer", les, "too nice")
                                job.Fd.Close() // #nosec G104
                                continue
                        }
                        if _, err = os.Stat(filepath.Join(dstPath, pktName)); err == nil || !os.IsNotExist(err) {
-                               ctx.LogD("nncp-xfer", sds, "already exists")
+                               ctx.LogD("nncp-xfer", les, "already exists")
                                job.Fd.Close() // #nosec G104
                                continue
                        }
                        if _, err = os.Stat(filepath.Join(dstPath, pktName+nncp.SeenSuffix)); err == nil || !os.IsNotExist(err) {
-                               ctx.LogD("nncp-xfer", sds, "already exists")
+                               ctx.LogD("nncp-xfer", les, "already exists")
                                job.Fd.Close() // #nosec G104
                                continue
                        }
                        tmp, err := nncp.TempFile(dstPath, "xfer")
                        if err != nil {
-                               ctx.LogE("nncp-xfer", sds, err, "mktemp")
+                               ctx.LogE("nncp-xfer", les, err, "mktemp")
                                job.Fd.Close() // #nosec G104
                                isBad = true
                                break
                        }
-                       sds["tmp"] = tmp.Name()
-                       ctx.LogD("nncp-xfer", sds, "created")
+                       les = append(les, nncp.LE{K: "Tmp", V: tmp.Name()})
+                       ctx.LogD("nncp-xfer", les, "created")
                        bufW := bufio.NewWriter(tmp)
                        copied, err := nncp.CopyProgressed(
                                bufW, bufio.NewReader(job.Fd), "Tx",
-                               nncp.SdsAdd(sds, nncp.SDS{"fullsize": job.Size}),
+                               append(les, nncp.LE{K: "FullSize", V: job.Size}),
                                ctx.ShowPrgrs,
                        )
                        job.Fd.Close() // #nosec G104
                        if err != nil {
-                               ctx.LogE("nncp-xfer", sds, err, "copy")
+                               ctx.LogE("nncp-xfer", les, err, "copy")
                                tmp.Close() // #nosec G104
                                isBad = true
                                continue
                        }
                        if err = bufW.Flush(); err != nil {
                                tmp.Close() // #nosec G104
-                               ctx.LogE("nncp-xfer", sds, err, "flush")
+                               ctx.LogE("nncp-xfer", les, err, "flush")
                                isBad = true
                                continue
                        }
                        if err = tmp.Sync(); err != nil {
                                tmp.Close() // #nosec G104
-                               ctx.LogE("nncp-xfer", sds, err, "sync")
+                               ctx.LogE("nncp-xfer", les, err, "sync")
                                isBad = true
                                continue
                        }
                        if err = tmp.Close(); err != nil {
-                               ctx.LogE("nncp-xfer", sds, err, "sync")
+                               ctx.LogE("nncp-xfer", les, err, "sync")
                        }
                        if err = os.Rename(tmp.Name(), filepath.Join(dstPath, pktName)); err != nil {
-                               ctx.LogE("nncp-xfer", sds, err, "rename")
+                               ctx.LogE("nncp-xfer", les, err, "rename")
                                isBad = true
                                continue
                        }
                        if err = nncp.DirSync(dstPath); err != nil {
-                               ctx.LogE("nncp-xfer", sds, err, "sync")
+                               ctx.LogE("nncp-xfer", les, err, "sync")
                                isBad = true
                                continue
                        }
                        os.Remove(filepath.Join(dstPath, pktName+".part")) // #nosec G104
-                       delete(sds, "tmp")
-                       ctx.LogI("nncp-xfer", nncp.SdsAdd(sds, nncp.SDS{"size": copied}), "")
+                       les = les[:len(les)-1]
+                       ctx.LogI("nncp-xfer", append(les, nncp.LE{K: "Size", V: copied}), "")
                        if !*keep {
                                if err = os.Remove(job.Fd.Name()); err != nil {
-                                       ctx.LogE("nncp-xfer", sds, err, "remove")
+                                       ctx.LogE("nncp-xfer", les, err, "remove")
                                        isBad = true
                                }
                        }