diff --git a/cmd/common.go b/cmd/common.go index 8f86fba..8237cb1 100644 --- a/cmd/common.go +++ b/cmd/common.go @@ -16,6 +16,7 @@ import ( "log" "os" "os/user" + "os/signal" "path/filepath" "sync" @@ -330,6 +331,16 @@ func Main(statePath string, processCallback certspotter.ProcessCallback) int { return 1 } + c := make(chan os.Signal, 1) + signal.Notify(c, os.Interrupt) + go func() { + <-c + if err := state.Unlock(); err != nil { + fmt.Fprintf(os.Stderr, "%s: Error unlocking state directory: %s\n", os.Args[0], err) + } + os.Exit(1) + }() + exitCode := 0 for i := range logs { exitCode |= processLog(&logs[i], processCallback)