From ec0de5f029805c25ce642586b8f2f1026487d1ac Mon Sep 17 00:00:00 2001 From: Jess Frazelle Date: Wed, 15 Mar 2017 09:26:19 -0700 Subject: [PATCH] fix moveFile Signed-off-by: Jess Frazelle --- server/server.go | 38 ++++++++++++++++++++------------------ 1 file changed, 20 insertions(+), 18 deletions(-) diff --git a/server/server.go b/server/server.go index f44b61f1..2316403f 100644 --- a/server/server.go +++ b/server/server.go @@ -43,28 +43,30 @@ func preload(c *cli.Context) (err error) { return nil } -func moveFile(src, dst string) (err error) { - in, err := os.Open(src) +func moveFile(src, dest string) (err error) { + srcfile, err := os.Open(src) if err != nil { return err } - defer in.Close() - tmp, err := ioutil.TempFile(filepath.Dir(dst), "") - if err != nil { - return err - } - _, err = io.Copy(tmp, in) - if err != nil { - tmp.Close() - os.Remove(tmp.Name()) - return err - } - if err = tmp.Close(); err != nil { - os.Remove(tmp.Name()) - return err - } + defer srcfile.Close() defer os.Remove(src) - return os.Rename(tmp.Name(), dst) + + destfile, err := os.Create(dest) + if err != nil { + return err + } + defer destfile.Close() + + if _, err := io.Copy(destfile, srcfile); err != nil { + return err + } + + srcinfo, err := os.Stat(src) + if err != nil { + return err + } + + return os.Chmod(dest, srcinfo.Mode()) } func main() {