From d355d02b938108b3af5cbd94fac3a35775b70bf2 Mon Sep 17 00:00:00 2001 From: TorchedSammy <38820196+TorchedSammy@users.noreply.github.com> Date: Mon, 28 Feb 2022 16:15:08 -0400 Subject: [PATCH] fix: only notify ctrl c signal on windows --- main.go | 24 ------------------------ signal_unix.go | 31 +++++++++++++++++++++++++++++++ signal_windows.go | 23 +++++++++++++++++++++++ 3 files changed, 54 insertions(+), 24 deletions(-) create mode 100644 signal_unix.go create mode 100644 signal_windows.go diff --git a/main.go b/main.go index e0859eb..72c5fdf 100644 --- a/main.go +++ b/main.go @@ -5,12 +5,10 @@ import ( "fmt" "io" "os" - "os/signal" "os/user" "path/filepath" "runtime" "strings" - "syscall" "hilbish/golibs/bait" @@ -254,28 +252,6 @@ func fmtPrompt() string { return nprompt } -func handleSignals() { - c := make(chan os.Signal) - signal.Notify(c, os.Interrupt, syscall.SIGWINCH, syscall.SIGUSR1, syscall.SIGUSR2) - - for s := range c { - switch s { - case os.Interrupt: - hooks.Em.Emit("signal.sigint") - if !running && interactive { - lr.ClearInput() - } - case syscall.SIGWINCH: - hooks.Em.Emit("signal.resize") - if !running && interactive { - lr.Resize() - } - case syscall.SIGUSR1: hooks.Em.Emit("signal.sigusr1") - case syscall.SIGUSR2: hooks.Em.Emit("signal.sigusr2") - } - } -} - func handleHistory(cmd string) { lr.AddHistory(cmd) // TODO: load history again (history shared between sessions like this ye) diff --git a/signal_unix.go b/signal_unix.go new file mode 100644 index 0000000..2a53067 --- /dev/null +++ b/signal_unix.go @@ -0,0 +1,31 @@ +// +build darwin linux + +package main + +import ( + "syscall" + "os" + "os/signal" +) + +func handleSignals() { + c := make(chan os.Signal) + signal.Notify(c, os.Interrupt, syscall.SIGWINCH, syscall.SIGUSR1, syscall.SIGUSR2) + + for s := range c { + switch s { + case os.Interrupt: + hooks.Em.Emit("signal.sigint") + if !running && interactive { + lr.ClearInput() + } + case syscall.SIGWINCH: + hooks.Em.Emit("signal.resize") + if !running && interactive { + lr.Resize() + } + case syscall.SIGUSR1: hooks.Em.Emit("signal.sigusr1") + case syscall.SIGUSR2: hooks.Em.Emit("signal.sigusr2") + } + } +} diff --git a/signal_windows.go b/signal_windows.go new file mode 100644 index 0000000..9f67537 --- /dev/null +++ b/signal_windows.go @@ -0,0 +1,23 @@ +// +build windows + +package main + +import ( + "os" + "os/signal" +) + +func handleSignals() { + c := make(chan os.Signal) + signal.Notify(c, os.Interrupt) + + for s := range c { + switch s { + case os.Interrupt: + hooks.Em.Emit("signal.sigint") + if !running && interactive { + lr.ClearInput() + } + } + } +}