summaryrefslogtreecommitdiffstats
path: root/osutil/osutil.go
blob: a91155a3e3604c54088a2dab664b69049671c151 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// Copyright (C) 2014 Jakob Borg and other contributors. All rights reserved.
// Use of this source code is governed by an MIT-style license that can be
// found in the LICENSE file.

package osutil

import (
	"os"
	"runtime"
)

func Rename(from, to string) error {
	if runtime.GOOS == "windows" {
		os.Chmod(to, 0666) // Make sure the file is user writeable
		err := os.Remove(to)
		if err != nil && !os.IsNotExist(err) {
			return err
		}
	}
	defer os.Remove(from) // Don't leave a dangling temp file in case of rename error
	return os.Rename(from, to)
}