diff options
author | Ben Morrison <ben@gbmor.dev> | 2019-05-13 00:42:48 -0400 |
---|---|---|
committer | Ben Morrison <ben@gbmor.dev> | 2019-05-13 00:42:48 -0400 |
commit | 5310d08bda170e2d394d27410655283e1797b7ff (patch) | |
tree | 730706dbe858d389ede0d5e39b191e6ec2a318d1 /init.go | |
parent | 313ab715c896dce98966f7e902b94da877cca1b2 (diff) | |
download | getwtxt-5310d08bda170e2d394d27410655283e1797b7ff.tar.gz |
watching for ^C. added comments.
Diffstat (limited to 'init.go')
-rw-r--r-- | init.go | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/init.go b/init.go index c16c49a..bef94af 100644 --- a/init.go +++ b/init.go @@ -4,6 +4,8 @@ import ( "fmt" "log" "os" + "os/signal" + "time" "github.com/fsnotify/fsnotify" "github.com/spf13/pflag" @@ -28,6 +30,7 @@ func init() { titleScreen() initConfig() initLogging() + watchForInterrupt() } func initConfig() { @@ -112,6 +115,28 @@ func rebindConfig() { initLogging() } +// Watch for SIGINT aka ^C +// Close the log file then exit +func watchForInterrupt() { + c := make(chan os.Signal, 1) + signal.Notify(c, os.Interrupt) + + go func() { + for sigint := range c { + log.Printf("\n\nCaught %v. Cleaning up ...\n", sigint) + + if !confObj.stdoutLogging { + // signal to close the log file + closelog <- true + time.Sleep(20 * time.Millisecond) + } + + close(closelog) + os.Exit(0) + } + }() +} + func titleScreen() { fmt.Printf(` |