summaryrefslogtreecommitdiff
path: root/runtime/graphdriver/aufs/dirs.go
diff options
context:
space:
mode:
Diffstat (limited to 'runtime/graphdriver/aufs/dirs.go')
-rw-r--r--runtime/graphdriver/aufs/dirs.go46
1 files changed, 46 insertions, 0 deletions
diff --git a/runtime/graphdriver/aufs/dirs.go b/runtime/graphdriver/aufs/dirs.go
new file mode 100644
index 0000000000..fb9b81edd2
--- /dev/null
+++ b/runtime/graphdriver/aufs/dirs.go
@@ -0,0 +1,46 @@
+package aufs
+
+import (
+ "bufio"
+ "io/ioutil"
+ "os"
+ "path"
+)
+
+// Return all the directories
+func loadIds(root string) ([]string, error) {
+ dirs, err := ioutil.ReadDir(root)
+ if err != nil {
+ return nil, err
+ }
+ out := []string{}
+ for _, d := range dirs {
+ if !d.IsDir() {
+ out = append(out, d.Name())
+ }
+ }
+ return out, nil
+}
+
+// Read the layers file for the current id and return all the
+// layers represented by new lines in the file
+//
+// If there are no lines in the file then the id has no parent
+// and an empty slice is returned.
+func getParentIds(root, id string) ([]string, error) {
+ f, err := os.Open(path.Join(root, "layers", id))
+ if err != nil {
+ return nil, err
+ }
+ defer f.Close()
+
+ out := []string{}
+ s := bufio.NewScanner(f)
+
+ for s.Scan() {
+ if t := s.Text(); t != "" {
+ out = append(out, s.Text())
+ }
+ }
+ return out, s.Err()
+}