summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakob Unterwurzacher2017-02-26 19:25:23 +0100
committerJakob Unterwurzacher2017-02-26 19:25:23 +0100
commit427c6c17193eda7fec77490175fbf7d8c86c3481 (patch)
treee8cca03fa6f28518d462dff785823d3141e66b14
parent57612a278bdd26de611b543be311748ca4dc42ca (diff)
exitcodes: define code 12 for "password incorrect"
-rw-r--r--internal/configfile/config_file.go3
-rw-r--r--internal/exitcodes/exitcodes.go38
-rw-r--r--mount.go3
3 files changed, 42 insertions, 2 deletions
diff --git a/internal/configfile/config_file.go b/internal/configfile/config_file.go
index c4865d7..1233d8a 100644
--- a/internal/configfile/config_file.go
+++ b/internal/configfile/config_file.go
@@ -9,6 +9,7 @@ import (
"github.com/rfjakob/gocryptfs/internal/contentenc"
"github.com/rfjakob/gocryptfs/internal/cryptocore"
+ "github.com/rfjakob/gocryptfs/internal/exitcodes"
"github.com/rfjakob/gocryptfs/internal/tlog"
)
import "os"
@@ -163,7 +164,7 @@ func LoadConfFile(filename string, password string) ([]byte, *ConfFile, error) {
tlog.Warn.Enabled = true
if err != nil {
tlog.Warn.Printf("failed to unlock master key: %s", err.Error())
- return nil, nil, fmt.Errorf("Password incorrect.")
+ return nil, nil, exitcodes.NewErr("Password incorrect.", exitcodes.PasswordIncorrect)
}
return key, &cf, err
diff --git a/internal/exitcodes/exitcodes.go b/internal/exitcodes/exitcodes.go
new file mode 100644
index 0000000..908e714
--- /dev/null
+++ b/internal/exitcodes/exitcodes.go
@@ -0,0 +1,38 @@
+// Package exitcodes contains all well-defined exit codes that gocryptfs
+// can return.
+package exitcodes
+
+import (
+ "fmt"
+ "os"
+)
+
+const (
+ // Other error - please inspect the message
+ Other = 11
+ // The password was incorrect
+ PasswordIncorrect = 12
+ // TODO several other exit codes are defined in main.go. These will be
+ // ported over here.
+)
+
+type Err struct {
+ error
+ code int
+}
+
+// NewErr returns an error containing "msg" and the exit code "code".
+func NewErr(msg string, code int) Err {
+ return Err{
+ error: fmt.Errorf(msg),
+ code: code,
+ }
+}
+
+func Exit(err error) {
+ err2, ok := err.(Err)
+ if !ok {
+ os.Exit(Other)
+ }
+ os.Exit(err2.code)
+}
diff --git a/mount.go b/mount.go
index 9e66a94..7845063 100644
--- a/mount.go
+++ b/mount.go
@@ -21,6 +21,7 @@ import (
"github.com/rfjakob/gocryptfs/internal/configfile"
"github.com/rfjakob/gocryptfs/internal/cryptocore"
"github.com/rfjakob/gocryptfs/internal/ctlsock"
+ "github.com/rfjakob/gocryptfs/internal/exitcodes"
"github.com/rfjakob/gocryptfs/internal/fusefrontend"
"github.com/rfjakob/gocryptfs/internal/fusefrontend_reverse"
"github.com/rfjakob/gocryptfs/internal/readpassword"
@@ -96,7 +97,7 @@ func doMount(args *argContainer) int {
// Close the socket file (which also deletes it)
args._ctlsockFd.Close()
}
- os.Exit(ErrExitLoadConf)
+ exitcodes.Exit(err)
}
readpassword.CheckTrailingGarbage()
printMasterKey(masterkey)