summary refs log tree commit diff stats
path: root/init.go
diff options
context:
space:
mode:
Diffstat (limited to 'init.go')
-rw-r--r--init.go25
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(`