mirror of
https://github.com/gitpod-io/gitpod.git
synced 2025-12-08 17:36:30 +00:00
32 lines
859 B
Go
32 lines
859 B
Go
// Copyright (c) 2021 Gitpod GmbH. All rights reserved.
|
|
// Licensed under the GNU Affero General Public License (AGPL).
|
|
// See License.AGPL.txt in the project root for license information.
|
|
|
|
package iws
|
|
|
|
import (
|
|
"unsafe"
|
|
|
|
"golang.org/x/sys/unix"
|
|
)
|
|
|
|
func syscallOpenTree(dfd int, path string, flags uintptr) (fd uintptr, err error) {
|
|
p1, err := unix.BytePtrFromString(path)
|
|
if err != nil {
|
|
return 0, err
|
|
}
|
|
fd, _, errno := unix.Syscall(unix.SYS_OPEN_TREE, uintptr(dfd), uintptr(unsafe.Pointer(p1)), flags)
|
|
if errno != 0 {
|
|
return 0, errno
|
|
}
|
|
|
|
return fd, nil
|
|
}
|
|
|
|
const (
|
|
// FlagOpenTreeClone: https://elixir.bootlin.com/linux/latest/source/include/uapi/linux/mount.h#L62
|
|
flagOpenTreeClone = 1
|
|
// FlagAtRecursive: Apply to the entire subtree: https://elixir.bootlin.com/linux/latest/source/include/uapi/linux/fcntl.h#L112
|
|
flagAtRecursive = 0x8000
|
|
)
|