-
Notifications
You must be signed in to change notification settings - Fork 251
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #1215 from dfr/freebsd
Add FreeBSD support in pkg/mount and pkg/reexec
- Loading branch information
Showing
5 changed files
with
88 additions
and
3 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,7 +1,6 @@ | ||
package graphdriver | ||
|
||
import ( | ||
"fmt" | ||
"golang.org/x/sys/unix" | ||
|
||
"github.com/containers/storage/pkg/mount" | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,47 @@ | ||
package mount | ||
|
||
import ( | ||
"golang.org/x/sys/unix" | ||
) | ||
|
||
const ( | ||
// RDONLY will mount the file system read-only. | ||
RDONLY = unix.MNT_RDONLY | ||
|
||
// NOSUID will not allow set-user-identifier or set-group-identifier bits to | ||
// take effect. | ||
NOSUID = unix.MNT_NOSUID | ||
|
||
// NOEXEC will not allow execution of any binaries on the mounted file system. | ||
NOEXEC = unix.MNT_NOEXEC | ||
|
||
// SYNCHRONOUS will allow I/O to the file system to be done synchronously. | ||
SYNCHRONOUS = unix.MNT_SYNCHRONOUS | ||
|
||
// REMOUNT will attempt to remount an already-mounted file system. This is | ||
// commonly used to change the mount flags for a file system, especially to | ||
// make a readonly file system writeable. It does not change device or mount | ||
// point. | ||
REMOUNT = unix.MNT_UPDATE | ||
|
||
// NOATIME will not update the file access time when reading from a file. | ||
NOATIME = unix.MNT_NOATIME | ||
|
||
NODIRATIME = 0 | ||
NODEV = 0 | ||
DIRSYNC = 0 | ||
MANDLOCK = 0 | ||
BIND = 0 | ||
RBIND = 0 | ||
UNBINDABLE = 0 | ||
RUNBINDABLE = 0 | ||
PRIVATE = 0 | ||
RPRIVATE = 0 | ||
SLAVE = 0 | ||
RSLAVE = 0 | ||
SHARED = 0 | ||
RSHARED = 0 | ||
RELATIME = 0 | ||
STRICTATIME = 0 | ||
mntDetach = 0 | ||
) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,4 +1,5 @@ | ||
// +build !linux | ||
//go:build !linux && !freebsd | ||
// +build !linux,!freebsd | ||
|
||
package mount | ||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,37 @@ | ||
// +build freebsd | ||
|
||
package reexec | ||
|
||
import ( | ||
"context" | ||
"os" | ||
"os/exec" | ||
|
||
"golang.org/x/sys/unix" | ||
) | ||
|
||
// Self returns the path to the current process's binary. | ||
// Uses sysctl. | ||
func Self() string { | ||
path, err := unix.SysctlArgs("kern.proc.pathname", -1) | ||
if err == nil { | ||
return path | ||
} | ||
return os.Args[0] | ||
} | ||
|
||
// Command returns *exec.Cmd which has Path as current binary. | ||
// For example if current binary is "docker" at "/usr/bin/", then cmd.Path will | ||
// be set to "/usr/bin/docker". | ||
func Command(args ...string) *exec.Cmd { | ||
cmd := exec.Command(Self()) | ||
cmd.Args = args | ||
return cmd | ||
} | ||
|
||
// CommandContext returns *exec.Cmd which has Path as current binary. | ||
func CommandContext(ctx context.Context, args ...string) *exec.Cmd { | ||
cmd := exec.CommandContext(ctx, Self()) | ||
cmd.Args = args | ||
return cmd | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,4 +1,5 @@ | ||
// +build freebsd solaris darwin | ||
//go:build solaris || darwin | ||
// +build solaris darwin | ||
|
||
package reexec | ||
|
||
|