diff options
Diffstat (limited to 'src/serv.c')
-rw-r--r-- | src/serv.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/src/serv.c b/src/serv.c index add0ee4065..258af18d81 100644 --- a/src/serv.c +++ b/src/serv.c @@ -1123,7 +1123,18 @@ static void terminate(int sig) __attribute__ ((__noreturn__)); static void terminate(int sig) { - fprintf(stderr, "Exiting via signal %d\n", sig); + char buf[64] = { 0 }; + char *p; + + /* This code must be async-signal-safe. */ + p = stpcpy(buf, "Exiting via signal "); + + if (sig > 10) + *p++ = '0' + sig / 10; + *p++ = '0' + sig % 10; + *p++ = '\n'; + + write(STDERR_FILENO, buf, p - buf); exit(1); } |