return node, nil
}
+func ensureDir(p string) error {
+ fi, err := os.Stat(p)
+ if err == nil {
+ if fi.IsDir() {
+ return nil
+ }
+ return fmt.Errorf("%s: is not a directory", p)
+ }
+ if !os.IsNotExist(err) {
+ return err
+ }
+ return os.MkdirAll(p, os.FileMode(0777))
+}
+
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)
- }
- fd, err := os.Open(dirPath)
+ err := ensureDir(dirPath)
if err != nil {
- if !os.IsNotExist(err) {
- return err
- }
- if err := os.MkdirAll(dirPath, os.FileMode(0777)); err != nil {
- ctx.LogE("dir-ensure-mkdir", LEs{{"Dir", dirPath}}, err, logMsg)
- return err
- }
- fd, err = os.Open(dirPath)
- if err != nil {
- ctx.LogE("dir-ensure-open", LEs{{"Dir", dirPath}}, err, logMsg)
- return err
- }
+ ctx.LogE("dir-ensure-mkdir", LEs{{"Dir", dirPath}}, err, func(les LEs) string {
+ return fmt.Sprintf("Ensuring directory %s existence", dirPath)
+ })
}
- return fd.Close()
+ return err
}
func CtxFromCmdline(
import (
"fmt"
- "os"
"time"
"github.com/fsnotify/fsnotify"
if err != nil {
return nil, err
}
+ err = ensureDir(dir)
+ if err != nil {
+ return nil, err
+ }
err = w.Add(dir)
if err != nil {
- if !os.IsNotExist(err) {
- w.Close()
- return nil, err
- }
- if err = os.MkdirAll(dir, os.FileMode(0777)); err != nil {
- w.Close()
- return nil, err
- }
- err = w.Add(dir)
- if err != nil {
- w.Close()
- return nil, err
- }
+ w.Close()
+ return nil, err
}
dw := DirWatcher{
w: w,
func (ctx *Ctx) NewTmpFile() (*os.File, error) {
jobsPath := filepath.Join(ctx.Spool, "tmp")
- if _, err := os.Stat(jobsPath); err != nil {
- if !os.IsNotExist(err) {
- return nil, err
- }
- if err := os.MkdirAll(jobsPath, os.FileMode(0777)); err != nil {
- return nil, err
- }
+ if err := ensureDir(jobsPath); err != nil {
+ return nil, err
}
fd, err := TempFile(jobsPath, "")
if err == nil {
func (tmp *TmpFileWHash) Commit(dir string) error {
var err error
- if _, err = os.Stat(dir); err != nil {
- if !os.IsNotExist(err) {
- return err
- }
- if err = os.MkdirAll(dir, os.FileMode(0777)); err != nil {
- return err
- }
+ if err = ensureDir(dir); err != nil {
+ return err
}
if err = tmp.W.Flush(); err != nil {
tmp.Fd.Close()
msgHash,
)
}
- if _, err = os.Stat(seenDir); err != nil {
- if !os.IsNotExist(err) {
- ctx.LogE("tx-mkdir", les, err, logMsg)
- return lastNode, err
- }
- if err = os.MkdirAll(seenDir, os.FileMode(0777)); err != nil {
- ctx.LogE("tx-mkdir", les, err, logMsg)
- return lastNode, err
- }
+ if err = ensureDir(seenDir); err != nil {
+ ctx.LogE("tx-mkdir", les, err, logMsg)
+ return lastNode, err
}
if fd, err := os.Create(seenPath); err == nil {
fd.Close()