mirror of
https://github.com/containers/podman.git
synced 2025-11-15 10:38:56 +08:00
vendor: update psgo to v1.3.0
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
This commit is contained in:
41
vendor/github.com/containers/psgo/internal/proc/ns.go
generated
vendored
41
vendor/github.com/containers/psgo/internal/proc/ns.go
generated
vendored
@@ -15,10 +15,20 @@
|
||||
package proc
|
||||
|
||||
import (
|
||||
"bufio"
|
||||
"fmt"
|
||||
"io"
|
||||
"os"
|
||||
|
||||
"github.com/pkg/errors"
|
||||
)
|
||||
|
||||
type IDMap struct {
|
||||
ContainerID int
|
||||
HostID int
|
||||
Size int
|
||||
}
|
||||
|
||||
// ParsePIDNamespace returns the content of /proc/$pid/ns/pid.
|
||||
func ParsePIDNamespace(pid string) (string, error) {
|
||||
pidNS, err := os.Readlink(fmt.Sprintf("/proc/%s/ns/pid", pid))
|
||||
@@ -36,3 +46,34 @@ func ParseUserNamespace(pid string) (string, error) {
|
||||
}
|
||||
return userNS, nil
|
||||
}
|
||||
|
||||
// ReadMappings reads the user namespace mappings at the specified path
|
||||
func ReadMappings(path string) ([]IDMap, error) {
|
||||
file, err := os.Open(path)
|
||||
if err != nil {
|
||||
return nil, errors.Wrapf(err, "cannot open %s", path)
|
||||
}
|
||||
defer file.Close()
|
||||
|
||||
mappings := []IDMap{}
|
||||
|
||||
buf := bufio.NewReader(file)
|
||||
for {
|
||||
line, _, err := buf.ReadLine()
|
||||
if err != nil {
|
||||
if err == io.EOF {
|
||||
return mappings, nil
|
||||
}
|
||||
return nil, errors.Wrapf(err, "cannot read line from %s", path)
|
||||
}
|
||||
if line == nil {
|
||||
return mappings, nil
|
||||
}
|
||||
|
||||
containerID, hostID, size := 0, 0, 0
|
||||
if _, err := fmt.Sscanf(string(line), "%d %d %d", &containerID, &hostID, &size); err != nil {
|
||||
return nil, errors.Wrapf(err, "cannot parse %s", string(line))
|
||||
}
|
||||
mappings = append(mappings, IDMap{ContainerID: containerID, HostID: hostID, Size: size})
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user