]> Cypherpunks.ru repositories - nncp.git/blobdiff - src/tmp.go
Do Mkdir syscall only if directory does not exist
[nncp.git] / src / tmp.go
index 7b9ded1b6220450a61aa0d2b301caf7b11842ce9..6d1e49c08e132794b5faa1934342bbb7b5d32823 100644 (file)
@@ -37,8 +37,13 @@ func TempFile(dir, prefix string) (*os.File, error) {
 
 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 {
@@ -95,8 +100,13 @@ func (tmp *TmpFileWHash) Checksum() string {
 
 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()