summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--event.c4
-rw-r--r--sandman.112
-rw-r--r--sandman.m14
3 files changed, 8 insertions, 22 deletions
diff --git a/event.c b/event.c
index 444e7df..4ea9f81 100644
--- a/event.c
+++ b/event.c
@@ -120,6 +120,7 @@ noreturn void eventLoop(void) {
};
sigaction(SIGCHLD, &action, NULL);
sigaction(SIGINT, &action, NULL);
+ sigaction(SIGHUP, &action, NULL);
struct sigaction curses;
sigaction(SIGWINCH, &action, &curses);
@@ -130,6 +131,7 @@ noreturn void eventLoop(void) {
for (;;) {
if (sig[SIGCHLD]) childWait();
+ if (sig[SIGHUP]) ircFmt("QUIT :zzz\r\n");
if (sig[SIGINT]) {
signal(SIGINT, SIG_DFL);
ircFmt("QUIT :Goodbye\r\n");
@@ -139,7 +141,7 @@ noreturn void eventLoop(void) {
uiRead();
uiDraw();
}
- sig[SIGCHLD] = sig[SIGINT] = sig[SIGWINCH] = 0;
+ sig[SIGCHLD] = sig[SIGHUP] = sig[SIGINT] = sig[SIGWINCH] = 0;
struct pollfd fds[3] = {
{ .events = POLLIN, .fd = irc },
diff --git a/sandman.1 b/sandman.1
index 0f6606b..2cdd70b 100644
--- a/sandman.1
+++ b/sandman.1
@@ -16,14 +16,10 @@ is a utility for Darwin systems.
It runs the
.Ar command
as a child process
-and sends it
-.Dv SIGTSTP
-and
-.Dv SIGCONT
-signals
-when the system goes to sleep
-and wakes from sleep,
-respectively.
+and sends it the
+.Dv SIGHUP
+signal
+when the system goes to sleep.
.
.Sh EXIT STATUS
.Nm
diff --git a/sandman.m b/sandman.m
index e8163c0..cc8bcc9 100644
--- a/sandman.m
+++ b/sandman.m
@@ -59,19 +59,7 @@ int main(int argc, char *argv[]) {
queue: nil
usingBlock: ^(NSNotification *note) {
(void)note;
- int error = kill(pid, SIGTSTP);
- if (error) err(EX_UNAVAILABLE, "kill %d", pid);
- }
- ];
-
- [
- [[NSWorkspace sharedWorkspace] notificationCenter]
- addObserverForName: NSWorkspaceDidWakeNotification
- object: nil
- queue: nil
- usingBlock: ^(NSNotification *note) {
- (void)note;
- int error = kill(pid, SIGCONT);
+ int error = kill(pid, SIGHUP);
if (error) err(EX_UNAVAILABLE, "kill %d", pid);
}
];