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>
This commit is contained in:
Ian Lance Taylor
2016-01-26 17:36:05 -08:00
parent 20457ee8ea
commit eb2c74142f
3 changed files with 5 additions and 5 deletions

View File

@@ -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)

View File

@@ -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

View File

@@ -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