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-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
+ 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
+ }
}
return fd.Close()
}
func (ctx *Ctx) NewTmpFile() (*os.File, error) {
jobsPath := filepath.Join(ctx.Spool, "tmp")
- if err := os.MkdirAll(jobsPath, os.FileMode(0777)); err != nil {
- return nil, err
+ 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
+ }
}
fd, err := TempFile(jobsPath, "")
if err == nil {
func (tmp *TmpFileWHash) Commit(dir string) error {
var err error
- if err = os.MkdirAll(dir, os.FileMode(0777)); err != nil {
- return err
+ 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 = tmp.W.Flush(); err != nil {
tmp.Fd.Close()
msgHash,
)
}
- if err = os.MkdirAll(seenDir, os.FileMode(0777)); err != nil {
- ctx.LogE("tx-mkdir", les, err, logMsg)
- return lastNode, err
+ 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 fd, err := os.Create(seenPath); err == nil {
fd.Close()