aboutsummaryrefslogtreecommitdiff
path: root/src/os/root_openat.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/os/root_openat.go')
-rw-r--r--src/os/root_openat.go13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/os/root_openat.go b/src/os/root_openat.go
index 8c07784b5a..2cb867459b 100644
--- a/src/os/root_openat.go
+++ b/src/os/root_openat.go
@@ -138,6 +138,19 @@ func rootRemove(r *Root, name string) error {
return nil
}
+func rootRename(r *Root, oldname, newname string) error {
+ _, err := doInRoot(r, oldname, func(oldparent sysfdType, oldname string) (struct{}, error) {
+ _, err := doInRoot(r, newname, func(newparent sysfdType, newname string) (struct{}, error) {
+ return struct{}{}, renameat(oldparent, oldname, newparent, newname)
+ })
+ return struct{}{}, err
+ })
+ if err != nil {
+ return &LinkError{"renameat", oldname, newname, err}
+ }
+ return err
+}
+
// doInRoot performs an operation on a path in a Root.
//
// It opens the directory containing the final element of the path,