int/linux: add/use Getwd

Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>
This commit is contained in:
Kir Kolyshkin
2025-03-25 14:36:42 -07:00
parent 8cc1eb379b
commit 431b8bb4d8
4 changed files with 24 additions and 17 deletions
+10
View File
@@ -16,3 +16,13 @@ func retryOnEINTR(fn func() error) error {
}
}
}
// retryOnEINTR2 is like retryOnEINTR, but it returns 2 values.
func retryOnEINTR2[T any](fn func() (T, error)) (T, error) {
for {
val, err := fn()
if !errors.Is(err, unix.EINTR) {
return val, err
}
}
}
+6
View File
@@ -6,6 +6,12 @@ import (
"golang.org/x/sys/unix"
)
// Getwd wraps [unix.Getwd].
func Getwd() (wd string, err error) {
wd, err = retryOnEINTR2(unix.Getwd)
return wd, os.NewSyscallError("getwd", err)
}
// Sendmsg wraps [unix.Sendmsg].
func Sendmsg(fd int, p, oob []byte, to unix.Sockaddr, flags int) error {
err := retryOnEINTR(func() error {