X-Git-Url: http://www.git.cypherpunks.ru/?a=blobdiff_plain;f=src%2Ftmp.go;h=0784b996eea067656966f6e2b5bfb8a516f31242;hb=f70e9df35c2ff6324c07125916ae8e214ff7f420;hp=95e45ee4a6162a3eb01ea084ecce9c6606f804e6;hpb=ed7323f31820d7863ea055adec5e648e83e144a8;p=nncp.git diff --git a/src/tmp.go b/src/tmp.go index 95e45ee..0784b99 100644 --- a/src/tmp.go +++ b/src/tmp.go @@ -79,6 +79,19 @@ func (tmp *TmpFileWHash) Cancel() { os.Remove(tmp.Fd.Name()) } +func DirSync(dirPath string) error { + fd, err := os.Open(dirPath) + if err != nil { + return err + } + err = fd.Sync() + if err != nil { + fd.Close() + return err + } + return fd.Close() +} + func (tmp *TmpFileWHash) Commit(dir string) error { var err error if err = os.MkdirAll(dir, os.FileMode(0777)); err != nil { @@ -95,5 +108,8 @@ func (tmp *TmpFileWHash) Commit(dir string) error { tmp.Fd.Close() checksum := ToBase32(tmp.Hsh.Sum(nil)) tmp.ctx.LogD("tmp", SDS{"src": tmp.Fd.Name(), "dst": checksum}, "commit") - return os.Rename(tmp.Fd.Name(), filepath.Join(dir, checksum)) + if err = os.Rename(tmp.Fd.Name(), filepath.Join(dir, checksum)); err != nil { + return err + } + return DirSync(dir) }