exitcodes: get rid of generic "Mount" exit code

Instead, create three new specific exit codes:
* FuseNewServer = 19
* CtlSock = 20
* PanicLogCreate = 21
This commit is contained in:
Jakob Unterwurzacher 2017-05-14 13:51:13 +02:00
parent 18f354d84b
commit 8aabc54276
2 changed files with 20 additions and 11 deletions

View File

@ -8,12 +8,12 @@ import (
) )
const ( const (
// Usage error: cli syntax etc // Usage - usage error like wrong cli syntax, wrong number of parameters.
Usage = 1 Usage = 1
// 2 is reserved because it is used by Go panic // 2 is reserved because it is used by Go panic
// 3 is reserved because it was used by earlier gocryptfs version as a generic
// "mount" error.
// Mount is an error on mount
Mount = 3
// CipherDir means that the CIPHERDIR does not exist // CipherDir means that the CIPHERDIR does not exist
CipherDir = 6 CipherDir = 6
// Init is an error on filesystem init // Init is an error on filesystem init
@ -26,7 +26,8 @@ const (
MountPoint = 10 MountPoint = 10
// Other error - please inspect the message // Other error - please inspect the message
Other = 11 Other = 11
// PasswordIncorrect - the password was incorrect // PasswordIncorrect - the password was incorrect when mounting or when
// changing the password.
PasswordIncorrect = 12 PasswordIncorrect = 12
// ScryptParams means that scrypt was called with invalid parameters // ScryptParams means that scrypt was called with invalid parameters
ScryptParams = 13 ScryptParams = 13
@ -35,12 +36,20 @@ const (
MasterKey = 14 MasterKey = 14
// SigInt means we got SIGINT // SigInt means we got SIGINT
SigInt = 15 SigInt = 15
// PanicLog means the panic log was not empty when we were unmounted // PanicLogNotEmpty means the panic log was not empty when we were unmounted
PanicLog = 16 PanicLogNotEmpty = 16
// ForkChild means forking the worker child failed // ForkChild means forking the worker child failed
ForkChild = 17 ForkChild = 17
// OpenSSL means you tried to enable OpenSSL, but we were compiled without it. // OpenSSL means you tried to enable OpenSSL, but we were compiled without it.
OpenSSL = 18 OpenSSL = 18
// FuseNewServer - this exit code means that the call to fuse.NewServer failed.
// This usually means that there was a problem executing fusermount, or
// fusermount could not attach the mountpoint to the kernel.
FuseNewServer = 19
// CtlSock - the control socket file could not be created.
CtlSock = 20
// PanicLogCreate - there was a problem creating the /tmp/gocryptfs_paniclog.XYZ file.
PanicLogCreate = 21
) )
// Err wraps an error with an associated numeric exit code // Err wraps an error with an associated numeric exit code

View File

@ -64,7 +64,7 @@ func doMount(args *argContainer) int {
sock, err = net.Listen("unix", args.ctlsock) sock, err = net.Listen("unix", args.ctlsock)
if err != nil { if err != nil {
tlog.Fatal.Printf("ctlsock: %v", err) tlog.Fatal.Printf("ctlsock: %v", err)
os.Exit(exitcodes.Mount) os.Exit(exitcodes.CtlSock)
} }
args._ctlsockFd = sock args._ctlsockFd = sock
// Close also deletes the socket file // Close also deletes the socket file
@ -118,7 +118,7 @@ func doMount(args *argContainer) int {
paniclog, err = ioutil.TempFile("", "gocryptfs_paniclog.") paniclog, err = ioutil.TempFile("", "gocryptfs_paniclog.")
if err != nil { if err != nil {
tlog.Fatal.Printf("Failed to create gocryptfs_paniclog: %v", err) tlog.Fatal.Printf("Failed to create gocryptfs_paniclog: %v", err)
os.Exit(exitcodes.Mount) os.Exit(exitcodes.PanicLogCreate)
} }
// Switch all of our logs and the generic logger to syslog // Switch all of our logs and the generic logger to syslog
tlog.Info.SwitchToSyslog(syslog.LOG_USER | syslog.LOG_INFO) tlog.Info.SwitchToSyslog(syslog.LOG_USER | syslog.LOG_INFO)
@ -165,7 +165,7 @@ func doMount(args *argContainer) int {
} else if fi.Size() > 0 { } else if fi.Size() > 0 {
tlog.Warn.Printf("paniclog at %q is not empty (size %d). Not deleting it.", tlog.Warn.Printf("paniclog at %q is not empty (size %d). Not deleting it.",
paniclog.Name(), fi.Size()) paniclog.Name(), fi.Size())
return exitcodes.PanicLog return exitcodes.PanicLogNotEmpty
} else { } else {
syscall.Unlink(paniclog.Name()) syscall.Unlink(paniclog.Name())
} }
@ -306,8 +306,8 @@ func initFuseFrontend(key []byte, args *argContainer, confFile *configfile.ConfF
} }
srv, err := fuse.NewServer(conn.RawFS(), args.mountpoint, &mOpts) srv, err := fuse.NewServer(conn.RawFS(), args.mountpoint, &mOpts)
if err != nil { if err != nil {
tlog.Fatal.Printf("Mount failed: %v", err) tlog.Fatal.Printf("fuse.NewServer failed: %v", err)
os.Exit(exitcodes.Mount) os.Exit(exitcodes.FuseNewServer)
} }
srv.SetDebug(args.fusedebug) srv.SetDebug(args.fusedebug)