X-Git-Url: http://www.git.cypherpunks.ru/?a=blobdiff_plain;f=src%2Fctx.go;h=63d1fc27353dac5682fee2ce24b0d0adde87fdf9;hb=ab7c7eca0e53661f0ba904c2a6ba752990bea367;hp=3793bbba6b6808b3c3b9d0630a788682b54e615b;hpb=46a831419b4b0ba458283ba705abfcc100f41242;p=nncp.git diff --git a/src/ctx.go b/src/ctx.go index 3793bbb..63d1fc2 100644 --- a/src/ctx.go +++ b/src/ctx.go @@ -1,6 +1,6 @@ /* NNCP -- Node to Node copy, utilities for store-and-forward data exchange -Copyright (C) 2016-2019 Sergey Matveev +Copyright (C) 2016-2021 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 @@ -19,13 +19,15 @@ package nncp import ( "errors" + "fmt" "io/ioutil" "log" "os" "path/filepath" - "golang.org/x/sys/unix" "syscall" + + "golang.org/x/sys/unix" ) type Ctx struct { @@ -34,13 +36,22 @@ type Ctx struct { Neigh map[NodeId]*Node Alias map[string]*NodeId + AreaId2Area map[AreaId]*Area + AreaName2Id map[string]*AreaId + Spool string LogPath string UmaskForce *int Quiet bool + ShowPrgrs bool + HdrUsage bool Debug bool NotifyFile *FromToJSON NotifyFreq *FromToJSON + NotifyExec map[string]*FromToJSON + + MCDRxIfis []string + MCDTxIfis map[string]int } func (ctx *Ctx) FindNode(id string) (*Node, error) { @@ -61,24 +72,34 @@ func (ctx *Ctx) FindNode(id string) (*Node, error) { func (ctx *Ctx) ensureRxDir(nodeId *NodeId) error { dirPath := filepath.Join(ctx.Spool, nodeId.String(), string(TRx)) + logMsg := func(les LEs) string { + return fmt.Sprintf("Ensuring directory %s existence", dirPath) + } if err := os.MkdirAll(dirPath, os.FileMode(0777)); err != nil { - ctx.LogE("dir-ensure", SDS{"dir": dirPath, "err": err}, "") + ctx.LogE("dir-ensure-mkdir", LEs{{"Dir", dirPath}}, err, logMsg) return err } fd, err := os.Open(dirPath) if err != nil { - ctx.LogE("dir-ensure", SDS{"dir": dirPath, "err": err}, "") + ctx.LogE("dir-ensure-open", LEs{{"Dir", dirPath}}, err, logMsg) return err } - fd.Close() - return nil + return fd.Close() } -func CtxFromCmdline(cfgPath, spoolPath, logPath string, quiet, debug bool) (*Ctx, error) { +func CtxFromCmdline( + cfgPath, + spoolPath, + logPath string, + quiet, showPrgrs, omitPrgrs, debug bool, +) (*Ctx, error) { env := os.Getenv(CfgPathEnv) if env != "" { cfgPath = env } + if showPrgrs && omitPrgrs { + return nil, errors.New("simultaneous -progress and -noprogress") + } cfgRaw, err := ioutil.ReadFile(cfgPath) if err != nil { return nil, err @@ -103,6 +124,12 @@ func CtxFromCmdline(cfgPath, spoolPath, logPath string, quiet, debug bool) (*Ctx } else { ctx.LogPath = logPath } + if showPrgrs { + ctx.ShowPrgrs = true + } + if quiet || omitPrgrs { + ctx.ShowPrgrs = false + } ctx.Quiet = quiet ctx.Debug = debug return ctx, nil