X-Git-Url: http://www.git.cypherpunks.ru/?a=blobdiff_plain;f=fileutils.go;h=03b852e011a2e9cbfcbd2af84e9fe3fd78f62f0f;hb=f3c71e12f9781d266b84d542b950bc77383a1dc1;hp=70d3f1123840718924d05f4817cdabdcf6034aa6;hpb=b036ee436eb9bd8889734232a22d3f24be5c9ee2;p=gocheese.git diff --git a/fileutils.go b/fileutils.go index 70d3f11..03b852e 100644 --- a/fileutils.go +++ b/fileutils.go @@ -1,6 +1,6 @@ /* GoCheese -- Python private package repository and caching proxy -Copyright (C) 2019 Sergey Matveev +Copyright (C) 2019-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 @@ -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 {