Explorar o código

unix: add flags parameter to Unlinkat

The flags parameter was added in https://golang.org/cl/7917.  In that CL
the reviewers discussed adding UnlinkAt and changing Unlinkat, and opted
for the latter.

Unfortunately, I then undid that in https://golang.org/cl/10032, which
was a backport of (among others) https://golang.org/cl/5837.  I didn't
notice that in the syscall package 5837 removed Unlinkat with two
parameters, but the port to the x/sys/unix package removed Unlinkat with
three parameters.  Argh.

This CL effectively restores 7917, by adding the parameter back.

Fixes golang/go#9923.

Change-Id: I8fe218ac637d0eb0346b63b596666671374bd19f
Reviewed-on: https://go-review.googlesource.com/18981
Reviewed-by: Rob Pike <r@golang.org>
Ian Lance Taylor %!s(int64=10) %!d(string=hai) anos
pai
achega
eb2c74142f
Modificáronse 3 ficheiros con 5 adicións e 5 borrados
  1. 2 2
      unix/syscall_linux.go
  2. 1 1
      unix/syscall_solaris.go
  3. 2 2
      unix/zsyscall_solaris_amd64.go

+ 2 - 2
unix/syscall_linux.go

@@ -86,8 +86,8 @@ func Unlink(path string) error {
 
 //sys	unlinkat(dirfd int, path string, flags int) (err error)
 
-func Unlinkat(dirfd int, path string) error {
-	return unlinkat(dirfd, path, 0)
+func Unlinkat(dirfd int, path string, flags int) error {
+	return unlinkat(dirfd, path, flags)
 }
 
 //sys	utimes(path string, times *[2]Timeval) (err error)

+ 1 - 1
unix/syscall_solaris.go

@@ -649,7 +649,7 @@ func IoctlGetTermio(fd int, req int) (*Termio, error) {
 //sysnb	Uname(buf *Utsname) (err error)
 //sys	Unmount(target string, flags int) (err error) = libc.umount
 //sys	Unlink(path string) (err error)
-//sys	Unlinkat(dirfd int, path string) (err error)
+//sys	Unlinkat(dirfd int, path string, flags int) (err error)
 //sys	Ustat(dev int, ubuf *Ustat_t) (err error)
 //sys	Utime(path string, buf *Utimbuf) (err error)
 //sys	bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) = libsocket.bind

+ 2 - 2
unix/zsyscall_solaris_amd64.go

@@ -1401,13 +1401,13 @@ func Unlink(path string) (err error) {
 	return
 }
 
-func Unlinkat(dirfd int, path string) (err error) {
+func Unlinkat(dirfd int, path string, flags int) (err error) {
 	var _p0 *byte
 	_p0, err = BytePtrFromString(path)
 	if err != nil {
 		return
 	}
-	_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procUnlinkat)), 2, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), 0, 0, 0, 0)
+	_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procUnlinkat)), 3, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0, 0, 0)
 	use(unsafe.Pointer(_p0))
 	if e1 != 0 {
 		err = e1