From 1b0426bcb23a1850f3a03619a15413281dc733e3 Mon Sep 17 00:00:00 2001 From: Jakob Unterwurzacher Date: Wed, 15 Nov 2017 20:30:21 +0100 Subject: [PATCH] main: print clear error message if CIPHERDIR is missing Getting just the help text in response to gocryptfs -info -config external.config is confusing: https://github.com/rfjakob/gocryptfs/issues/157 --- info.go | 2 +- main.go | 25 ++++++++++++++++--------- 2 files changed, 17 insertions(+), 10 deletions(-) diff --git a/info.go b/info.go index c2e0038..b6f041f 100644 --- a/info.go +++ b/info.go @@ -20,7 +20,7 @@ func info(filename string) { // Read from disk js, err := ioutil.ReadFile(filename) if err != nil { - tlog.Fatal.Printf("info: ReadFile: %#v\n", err) + tlog.Fatal.Printf("Reading config file failed: %v", err) os.Exit(exitcodes.LoadConf) } // Unmarshal diff --git a/main.go b/main.go index f790fff..f10adfb 100644 --- a/main.go +++ b/main.go @@ -143,18 +143,25 @@ func main() { tlog.Warn.Wpanic = true tlog.Debug.Printf("Panicing on warnings") } - // Every operation below requires CIPHERDIR. Check that we have it. - if flagSet.NArg() >= 1 { - args.cipherdir, _ = filepath.Abs(flagSet.Arg(0)) - err = checkDir(args.cipherdir) - if err != nil { - tlog.Fatal.Printf("Invalid cipherdir: %v", err) - os.Exit(exitcodes.CipherDir) + // Every operation below requires CIPHERDIR. Exit if we don't have it. + if flagSet.NArg() == 0 { + if flagSet.NFlag() == 0 { + // Naked call to "gocryptfs". Just print the help text. + helpShort() + } else { + // The user has passed some flags, but CIPHERDIR is missing. State + // what is wrong. + tlog.Fatal.Printf("CIPHERDIR argument is missing") } - } else { - helpShort() os.Exit(exitcodes.Usage) } + // Check that CIPHERDIR exists + args.cipherdir, _ = filepath.Abs(flagSet.Arg(0)) + err = checkDir(args.cipherdir) + if err != nil { + tlog.Fatal.Printf("Invalid cipherdir: %v", err) + os.Exit(exitcodes.CipherDir) + } // "-q" if args.quiet { tlog.Info.Enabled = false