From 8bccd3b4bf18d6505723b1c5ae30de4bbaad126e Mon Sep 17 00:00:00 2001 From: Jakob Unterwurzacher Date: Mon, 24 May 2021 14:26:20 +0200 Subject: Add contrib/findholes Utility and libs to find hole/data segments using lseek. --- contrib/findholes/main.go | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 contrib/findholes/main.go (limited to 'contrib/findholes/main.go') diff --git a/contrib/findholes/main.go b/contrib/findholes/main.go new file mode 100644 index 0000000..6f1ae64 --- /dev/null +++ b/contrib/findholes/main.go @@ -0,0 +1,34 @@ +// Find and pretty-print holes & data sections of a file. +package main + +import ( + "flag" + "fmt" + "os" + + "github.com/rfjakob/gocryptfs/contrib/findholes/holes" +) + +func main() { + flag.Parse() + if flag.NArg() != 1 { + fmt.Printf("Usage: findholes FILE\n") + os.Exit(1) + } + + f, err := os.Open(flag.Arg(0)) + if err != nil { + // os.Open() gives nicer error messages than syscall.Open() + fmt.Println(err) + os.Exit(1) + } + defer f.Close() + + segments, err := holes.Find(int(f.Fd())) + if err != nil { + fmt.Println(err) + os.Exit(1) + } + + fmt.Println(holes.PrettyPrint(segments)) +} -- cgit v1.2.3