diff options
| -rw-r--r-- | daemonize.go | 17 | ||||
| -rw-r--r-- | main.go | 11 | 
2 files changed, 25 insertions, 3 deletions
| diff --git a/daemonize.go b/daemonize.go index a65bd11..7d00288 100644 --- a/daemonize.go +++ b/daemonize.go @@ -2,10 +2,14 @@ package main  import (  	"fmt" +	"log" +	"log/syslog"  	"os"  	"os/exec"  	"os/signal"  	"syscall" + +	"github.com/rfjakob/gocryptfs/cryptfs"  )  // The child sends us USR1 if the mount was successful @@ -22,8 +26,7 @@ func exitOnUsr1() {  func forkChild() {  	go exitOnUsr1()  	name := os.Args[0] -	notifyArg := fmt.Sprintf("-notifypid=%d", os.Getpid()) -	newArgs := []string{"-f", notifyArg} +	newArgs := []string{"-f", fmt.Sprintf("-notifypid=%d", os.Getpid())}  	newArgs = append(newArgs, os.Args[1:]...)  	c := exec.Command(name, newArgs...)  	c.Stdout = os.Stdout @@ -47,3 +50,13 @@ func forkChild() {  	// The child exited with 0 - let's do the same.  	os.Exit(0)  } + +// Switch one Logger to syslog +func switchToSyslog(l *log.Logger, p syslog.Priority) { +	w, err := syslog.New(p, PROGRAM_NAME) +	if err != nil { +		cryptfs.Warn.Printf("Cannot switch 0x%02x to syslog: %v", p, err) +	} else { +		l.SetOutput(w) +	} +} @@ -5,6 +5,7 @@ import (  	"flag"  	"fmt"  	"io/ioutil" +	"log/syslog"  	"os"  	"os/exec"  	"os/signal" @@ -276,9 +277,17 @@ func main() {  	cryptfs.Debug.Printf("cli args: %v", args)  	srv := pathfsFrontend(masterkey, args, confFile)  	cryptfs.Info.Println(colorGreen + "Filesystem mounted and ready." + colorReset) -	// We are ready - send USR1 signal to our parent +	// We are ready - send USR1 signal to our parent and switch to syslog  	if args.notifypid > 0 {  		sendUsr1(args.notifypid) + +		if !args.quiet { +			switchToSyslog(cryptfs.Info, syslog.LOG_USER|syslog.LOG_INFO) +		} +		if args.debug { +			switchToSyslog(cryptfs.Debug, syslog.LOG_USER|syslog.LOG_DEBUG) +		} +		switchToSyslog(cryptfs.Warn, syslog.LOG_USER|syslog.LOG_WARNING)  	}  	// Wait for SIGINT in the background and unmount ourselves if we get it.  	// This prevents a dangling "Transport endpoint is not connected" mountpoint. | 
