Commit 044d2d5a authored by Brad Fitzpatrick's avatar Brad Fitzpatrick

os: document that Chown with -1 means to leave values unchanged, like POSIX

And fix the nacl implementation.

Fixes #24710

Change-Id: I31ffeea03a72dac5021ffb183fde31e9ffd060ad
Reviewed-on: https://go-review.googlesource.com/106464Reviewed-by: default avatarIan Lance Taylor <iant@golang.org>
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
parent a44cd686
...@@ -451,7 +451,11 @@ func Readlink(name string) (string, error) { ...@@ -451,7 +451,11 @@ func Readlink(name string) (string, error) {
// Chown changes the numeric uid and gid of the named file. // Chown changes the numeric uid and gid of the named file.
// If the file is a symbolic link, it changes the uid and gid of the link's target. // If the file is a symbolic link, it changes the uid and gid of the link's target.
// A uid or gid of -1 means to not change that value.
// If there is an error, it will be of type *PathError. // If there is an error, it will be of type *PathError.
//
// On Windows or Plan 9, Chown always returns the syscall.EWINDOWS or
// EPLAN9 error, wrapped in *PathError.
func Chown(name string, uid, gid int) error { func Chown(name string, uid, gid int) error {
return &PathError{"chown", name, syscall.EPLAN9} return &PathError{"chown", name, syscall.EPLAN9}
} }
......
...@@ -65,10 +65,11 @@ func (f *File) chmod(mode FileMode) error { ...@@ -65,10 +65,11 @@ func (f *File) chmod(mode FileMode) error {
// Chown changes the numeric uid and gid of the named file. // Chown changes the numeric uid and gid of the named file.
// If the file is a symbolic link, it changes the uid and gid of the link's target. // If the file is a symbolic link, it changes the uid and gid of the link's target.
// A uid or gid of -1 means to not change that value.
// If there is an error, it will be of type *PathError. // If there is an error, it will be of type *PathError.
// //
// On Windows, it always returns the syscall.EWINDOWS error, wrapped // On Windows or Plan 9, Chown always returns the syscall.EWINDOWS or
// in *PathError. // EPLAN9 error, wrapped in *PathError.
func Chown(name string, uid, gid int) error { func Chown(name string, uid, gid int) error {
if e := syscall.Chown(name, uid, gid); e != nil { if e := syscall.Chown(name, uid, gid); e != nil {
return &PathError{"chown", name, e} return &PathError{"chown", name, e}
......
...@@ -582,8 +582,12 @@ func Chown(path string, uid, gid int) error { ...@@ -582,8 +582,12 @@ func Chown(path string, uid, gid int) error {
if err != nil { if err != nil {
return err return err
} }
if uid != -1 {
ip.Uid = uint32(uid) ip.Uid = uint32(uid)
}
if gid != -1 {
ip.Gid = uint32(gid) ip.Gid = uint32(gid)
}
return nil return nil
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment