Skip to content
Snippets Groups Projects
windows.go 561 B
Newer Older
Androlo's avatar
Androlo committed
// +build windows

package files

import (
	"fmt"
	"os"
)

// TODO finish up.
func Rename(oldname, newname string) error {

	// Some extra fluff here.
	if fs, err := os.Stat(newname); !os.IsNotExist(err) {
		if fs.Mode().IsRegular() && isWritable(fs.Mode().Perm()) {
			errRM := os.Remove(newname)
			if errRM != nil {
				return errRM
			}
		} else {
			return fmt.Errorf("Target exists and cannot be over-written (is a directory or read-only file): " + newname)
		}
	}
	errRN := os.Rename(oldname, newname)
	if errRN != nil {
		return errRN
	}

	return nil
}