From 2ffda87f2dce71024f72ccff32cbfe29ee676bf8 Mon Sep 17 00:00:00 2001 From: Damien Neil Date: Wed, 19 Mar 2025 11:15:06 -0700 Subject: os: add Root.Rename For #67002 Change-Id: Ifb1042bc5ceaeea64296763319b24634bbcb0bf0 Reviewed-on: https://go-review.googlesource.com/c/go/+/659416 Reviewed-by: Ian Lance Taylor LUCI-TryBot-Result: Go LUCI Auto-Submit: Damien Neil --- src/os/root_openat.go | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'src/os/root_openat.go') 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, -- cgit v1.3