diff --git a/.gitignore b/.gitignore index f1c181e..f5cd106 100644 --- a/.gitignore +++ b/.gitignore @@ -10,3 +10,5 @@ # Output of the go coverage tool, specifically when used with LiteIDE *.out + +image \ No newline at end of file diff --git a/tar-read.go b/tar-read.go new file mode 100644 index 0000000..5c917d9 --- /dev/null +++ b/tar-read.go @@ -0,0 +1,56 @@ +package main + +import ( + "archive/tar" + "fmt" + "io" + "os" +) + +func main() { + f, err := os.Open("image/cache.tar") + if err != nil { + fmt.Println(err) + os.Exit(1) + } + defer f.Close() + + // gzf, err := gzip.NewReader(f) + // if err != nil { + // fmt.Println(err) + // os.Exit(1) + // } + + tarReader := tar.NewReader(f) + + for { + header, err := tarReader.Next() + + if err == io.EOF { + break + } + + if err != nil { + fmt.Println(err) + os.Exit(1) + } + + name := header.Name + + switch header.Typeflag { + case tar.TypeDir: + continue + case tar.TypeReg: + fmt.Println("File: ", name) + // show the contents + // io.Copy(os.Stdout, tarReader) + default: + fmt.Printf("%s : %c %s %s\n", + "hmmm?", + header.Typeflag, + "in file", + name, + ) + } + } +}