mirror of
https://github.com/opencontainers/runc.git
synced 2026-07-10 21:53:57 +08:00
int/linux: add/use Getwd
Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>
This commit is contained in:
@@ -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,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 {
|
||||
|
||||
Reference in New Issue
Block a user