]> Cypherpunks.ru repositories - gocheese.git/blobdiff - fileutils.go
Ability to turn off filesystem sync
[gocheese.git] / fileutils.go
index ba18ee98769217a7758caba5f7061a024b200aa8..03b852e011a2e9cbfcbd2af84e9fe3fd78f62f0f 100644 (file)
@@ -24,6 +24,8 @@ import (
        "time"
 )
 
+var NoSync = os.Getenv("GOCHEESE_NO_SYNC") == "1"
+
 func TempFile(dir string) (*os.File, error) {
        // Assume that probability of suffix collision is negligible
        suffix := strconv.FormatInt(time.Now().UnixNano()+int64(os.Getpid()), 16)
@@ -32,6 +34,9 @@ func TempFile(dir string) (*os.File, error) {
 }
 
 func DirSync(dirPath string) error {
+       if NoSync {
+               return nil
+       }
        fd, err := os.Open(dirPath)
        if err != nil {
                return err
@@ -54,10 +59,12 @@ func WriteFileSync(dirPath, filePath string, data []byte) error {
                dst.Close()
                return err
        }
-       if err = dst.Sync(); err != nil {
-               os.Remove(dst.Name())
-               dst.Close()
-               return err
+       if !NoSync {
+               if err = dst.Sync(); err != nil {
+                       os.Remove(dst.Name())
+                       dst.Close()
+                       return err
+               }
        }
        dst.Close()
        if err = os.Rename(dst.Name(), filePath); err != nil {