Add KILL support to term-signal setting.
authorDavin McCall <davmac@davmac.org>
Thu, 23 May 2019 21:13:27 +0000 (07:13 +1000)
committerDavin McCall <davmac@davmac.org>
Thu, 23 May 2019 21:13:27 +0000 (07:13 +1000)
Also have renamed termsignal to term-signal for consistency, but the old
name remains supported.

NEWS
doc/manpages/dinit-service.5
src/dasynq/dasynq-select.h
src/load-service.cc

diff --git a/NEWS b/NEWS
index 0f6cc43dcb04a4f94b6d8283b7762bfce5a551f5..a0c3cd55abd5e5e2dec1aae1c121750e5adc9476 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -7,6 +7,8 @@ preceding release.
  * Fix for crash due to SIGALRM on OpenBSD.
  * Fixes for compiling with Musl C library.
  * Fix dinitctl "enable" and "disable" commands when path to service directory is absolute.
+ * "termsignal" setting renamed "term-signal" and now supports "KILL" signal. "termsignal"
+   is still supported for compatibility with existing service descriptions.
  * Other minor fixes.
 
 == Version 0.5.0:
index 41288228903333d3d4fc0aea01b2782165f04c69..99d27dadb0203baa023fe0d6592413f910b81278 100644 (file)
@@ -214,13 +214,13 @@ specified, the socket will be owned by the user id of the Dinit process.
 Specifies the group of the activation socket. See discussion of
 \fBsocket\-uid\fR.
 .TP
-\fBtermsignal\fR = {HUP | INT | QUIT | USR1 | USR2}
+\fBterm\-signal\fR = {HUP | INT | QUIT | USR1 | USR2 | KILL}
 Specifies an additional signal to send to the process when requesting it
 to terminate (applies to 'process' services only). SIGTERM is always
-sent along with the specified signal, unless the \fBnosigterm\fR option is
+sent along with the specified signal, unless the \fBno\-sigterm\fR option is
 specified via the \fBoptions\fR parameter.
 .TP
-\fBready-notification\fR = {\fBpipefd:\fR\fIfd-number\fR | \fBpipevar:\fR\fIenv-var-name\fR}
+\fBready\-notification\fR = {\fBpipefd:\fR\fIfd-number\fR | \fBpipevar:\fR\fIenv-var-name\fR}
 Specifies the mechanism, if any, by which a process service will notify that it is ready
 (successfully started). If not specified, a process service is considered started as soon as it
 has begun execution. The two options are:
index 4c96e2cc86876fba39e5a2f9cadaabe8dfb2e120..e0ce78a8a89474d9b1896ba85f58c6f110daaf64 100644 (file)
@@ -4,6 +4,7 @@
 #include <system_error>
 #include <vector>
 #include <atomic>
+#include <tuple>
 
 #include <sys/time.h>
 #include <sys/types.h>
index 97d8b7a8d3614a0b0f27085166aa22491b433a89..d4b653a44d9d36622f621758eecfad552df0895f 100644 (file)
@@ -30,6 +30,7 @@ static int signal_name_to_number(std::string &signame)
     if (signame == "QUIT") return SIGQUIT;
     if (signame == "USR1") return SIGUSR1;
     if (signame == "USR2") return SIGUSR2;
+    if (signame == "KILL") return SIGKILL;
     return -1;
 }
 
@@ -549,7 +550,8 @@ service_record * dirload_service_set::load_service(const char * name)
                     }
                 }
             }
-            else if (setting == "termsignal") {
+            else if (setting == "term-signal" || setting == "termsignal") {
+                // Note: "termsignal" supported for legacy reasons.
                 string signame = read_setting_value(i, end, nullptr);
                 int signo = signal_name_to_number(signame);
                 if (signo == -1) {