aboutsummaryrefslogtreecommitdiffstats
path: root/kube2msb/src/vendor/github.com/opencontainers/runc/libcontainer/utils/utils.go
diff options
context:
space:
mode:
Diffstat (limited to 'kube2msb/src/vendor/github.com/opencontainers/runc/libcontainer/utils/utils.go')
-rw-r--r--kube2msb/src/vendor/github.com/opencontainers/runc/libcontainer/utils/utils.go121
1 files changed, 0 insertions, 121 deletions
diff --git a/kube2msb/src/vendor/github.com/opencontainers/runc/libcontainer/utils/utils.go b/kube2msb/src/vendor/github.com/opencontainers/runc/libcontainer/utils/utils.go
deleted file mode 100644
index 3466bfc..0000000
--- a/kube2msb/src/vendor/github.com/opencontainers/runc/libcontainer/utils/utils.go
+++ /dev/null
@@ -1,121 +0,0 @@
-package utils
-
-import (
- "crypto/rand"
- "encoding/hex"
- "encoding/json"
- "io"
- "os"
- "path/filepath"
- "strings"
- "syscall"
-)
-
-const (
- exitSignalOffset = 128
-)
-
-// GenerateRandomName returns a new name joined with a prefix. This size
-// specified is used to truncate the randomly generated value
-func GenerateRandomName(prefix string, size int) (string, error) {
- id := make([]byte, 32)
- if _, err := io.ReadFull(rand.Reader, id); err != nil {
- return "", err
- }
- if size > 64 {
- size = 64
- }
- return prefix + hex.EncodeToString(id)[:size], nil
-}
-
-// ResolveRootfs ensures that the current working directory is
-// not a symlink and returns the absolute path to the rootfs
-func ResolveRootfs(uncleanRootfs string) (string, error) {
- rootfs, err := filepath.Abs(uncleanRootfs)
- if err != nil {
- return "", err
- }
- return filepath.EvalSymlinks(rootfs)
-}
-
-// ExitStatus returns the correct exit status for a process based on if it
-// was signaled or exited cleanly
-func ExitStatus(status syscall.WaitStatus) int {
- if status.Signaled() {
- return exitSignalOffset + int(status.Signal())
- }
- return status.ExitStatus()
-}
-
-// WriteJSON writes the provided struct v to w using standard json marshaling
-func WriteJSON(w io.Writer, v interface{}) error {
- data, err := json.Marshal(v)
- if err != nil {
- return err
- }
- _, err = w.Write(data)
- return err
-}
-
-// CleanPath makes a path safe for use with filepath.Join. This is done by not
-// only cleaning the path, but also (if the path is relative) adding a leading
-// '/' and cleaning it (then removing the leading '/'). This ensures that a
-// path resulting from prepending another path will always resolve to lexically
-// be a subdirectory of the prefixed path. This is all done lexically, so paths
-// that include symlinks won't be safe as a result of using CleanPath.
-func CleanPath(path string) string {
- // Deal with empty strings nicely.
- if path == "" {
- return ""
- }
-
- // Ensure that all paths are cleaned (especially problematic ones like
- // "/../../../../../" which can cause lots of issues).
- path = filepath.Clean(path)
-
- // If the path isn't absolute, we need to do more processing to fix paths
- // such as "../../../../<etc>/some/path". We also shouldn't convert absolute
- // paths to relative ones.
- if !filepath.IsAbs(path) {
- path = filepath.Clean(string(os.PathSeparator) + path)
- // This can't fail, as (by definition) all paths are relative to root.
- path, _ = filepath.Rel(string(os.PathSeparator), path)
- }
-
- // Clean the path again for good measure.
- return filepath.Clean(path)
-}
-
-// SearchLabels searches a list of key-value pairs for the provided key and
-// returns the corresponding value. The pairs must be separated with '='.
-func SearchLabels(labels []string, query string) string {
- for _, l := range labels {
- parts := strings.SplitN(l, "=", 2)
- if len(parts) < 2 {
- continue
- }
- if parts[0] == query {
- return parts[1]
- }
- }
- return ""
-}
-
-// Annotations returns the bundle path and user defined annotations from the
-// libcontianer state. We need to remove the bundle because that is a label
-// added by libcontainer.
-func Annotations(labels []string) (bundle string, userAnnotations map[string]string) {
- userAnnotations = make(map[string]string)
- for _, l := range labels {
- parts := strings.SplitN(l, "=", 2)
- if len(parts) < 2 {
- continue
- }
- if parts[0] == "bundle" {
- bundle = parts[1]
- } else {
- userAnnotations[parts[0]] = parts[1]
- }
- }
- return
-}