runit

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README

commit 03a29bcd870b63a98ee0e689203135c0065e08d9
parent 52de7c05d86a06bed6a29ce8b0ff406dc799a6f5
Author: Gerrit Pape <pape@smarden.org>
Date:   Sun, 28 Mar 2004 18:17:35 +0000

  * man/svlogd.8: timestamps are not considered when matching patterns (thx
    Andras KORN).
  * runsv.c: on exit run the finish scripts when taking the service down
    (thx X.).
  * runsv.c, runsvctrl.c: handle sig_quit (thx Wayne Marshall).
  * svlogd.c: don't crash on zero byte long config file (thx Alex Efros).
  * man/*: minor cleanup.

Diffstat:
Mdebian/implicit | 98+++++++++++++++++++++++++++++++++++++++++++------------------------------------
Mdebian/rules | 2+-
Mdoc/svlogd.8.html | 10++++++----
Mman/runit-init.8 | 18+++++++++++-------
Mman/runit.8 | 17++++++++++-------
Mman/runsv.8 | 12+++++++-----
Mman/runsvchdir.8 | 7+++++--
Mman/runsvctrl.8 | 43+++++++++++++++++++++++++++++--------------
Mman/runsvdir.8 | 28++++++++++++++++------------
Mman/runsvstat.8 | 15+++++++++------
Mman/svlogd.8 | 16+++++++++++-----
Mman/svwaitdown.8 | 14++++++++------
Mman/svwaitup.8 | 18+++++++++++-------
Mman/utmpset.8 | 13++++++++-----
Mpackage/CHANGES | 10++++++++++
Msrc/runsv.c | 5++++-
Msrc/runsvctrl.c | 5+++--
Msrc/runsvctrl.dist | 2+-
Msrc/svlogd.c | 2+-
19 files changed, 204 insertions(+), 131 deletions(-)

diff --git a/debian/implicit b/debian/implicit @@ -3,69 +3,77 @@ .PHONY: deb-checkdir deb-checkuid deb-checkdir: - test -e debian/control || ! : wrong directory + @test -e debian/control || sh -cx '! : wrong directory' deb-checkuid: - test "`id -u`" -eq 0 || ! : need root privileges + @test "`id -u`" -eq 0 || sh -cx '! : need root privileges' %.deb: %.deb-docs %.deb-DEBIAN - @rm -f $*.deb $*.deb-checkdir $*.deb-docs \ - $*.deb-docs-examples $*.deb-docs-base \ - $*.deb-DEBIAN $*.deb-DEBIAN-dir \ - $*.deb-DEBIAN-scripts $*.deb-DEBIAN-md5sums + @rm -f $*.deb $*.deb-checkdir $*.deb-docs $*.deb-docs-base \ + $*.deb-docs-docs $*.deb-docs-examples $*.deb-DEBIAN \ + $*.deb-DEBIAN-dir $*.deb-DEBIAN-scripts $*.deb-DEBIAN-md5sums %.deb-checkdir: - test -d debian/$* || ! : directory missing - test "`id -u`" -eq 0 || ! : need root privileges + @test -d debian/$* || sh -cx '! : directory debian/$* missing' + @test "`id -u`" -eq 0 || sh -cx '! : need root privileges' %.deb-docs-base: : implicit - -rm -f debian/$*/usr/share/doc/$*/* - install -d -m0755 debian/$*/usr/share/doc/$* - install -m0644 debian/copyright debian/$*/usr/share/doc/$*/ - install -m0644 debian/changelog \ - debian/$*/usr/share/doc/$*/changelog.Debian - test ! -r changelog || \ - install -m0644 changelog debian/$*/usr/share/doc/$*/ - test -r debian/$*/usr/share/doc/$*/changelog || \ - mv debian/$*/usr/share/doc/$*/changelog.Debian \ - debian/$*/usr/share/doc/$*/changelog - gzip -9 debian/$*/usr/share/doc/$*/changelog* + @rm -f debian/$*/usr/share/doc/$*/* || : + @install -d -m0755 debian/$*/usr/share/doc/$* + : debian/$*/usr/share/doc/$*/ + @sh -cx 'install -m0644 debian/copyright debian/$*/usr/share/doc/$*/' + @sh -cx 'install -m0644 debian/changelog \ + debian/$*/usr/share/doc/$*/changelog.Debian' + @test ! -r changelog || \ + sh -cx 'install -m0644 changelog debian/$*/usr/share/doc/$*/' + @test -r debian/$*/usr/share/doc/$*/changelog || \ + sh -cx 'mv debian/$*/usr/share/doc/$*/changelog.Debian \ + debian/$*/usr/share/doc/$*/changelog' + @gzip -9 debian/$*/usr/share/doc/$*/changelog* +%.deb-docs-docs: + @for i in `cat debian/$*.docs 2>/dev/null || :`; do \ + sh -cx "install -m0644 $$i debian/$*/usr/share/doc/$*/" || exit 1; \ + done + @test ! -r debian/$*.README.Debian || \ + sh -cx 'install -m0644 debian/$*.README.Debian \ + debian/$*/usr/share/doc/$*/README.Debian' + @if test -r debian/$*.NEWS.Debian; then \ + sh -cx 'install -m0644 debian/$*.NEWS.Debian \ + debian/$*/usr/share/doc/$*/NEWS.Debian && \ + gzip -9 debian/$*/usr/share/doc/$*/NEWS.Debian'; \ + fi %.deb-docs-examples: - rm -rf debian/$*/usr/share/doc/$*/examples - test ! -r debian/$*.examples || \ + @rm -rf debian/$*/usr/share/doc/$*/examples + : debian/$*/usr/share/doc/$*/examples/ + @test ! -r debian/$*.examples || \ install -d -m0755 debian/$*/usr/share/doc/$*/examples - for i in `cat debian/$*.examples 2>/dev/null || :`; do \ - install -m0644 $$i debian/$*/usr/share/doc/$*/examples/ || exit 1; \ - done -%.deb-docs: %.deb-checkdir %.deb-docs-base %.deb-docs-examples - for i in `cat debian/$*.docs 2>/dev/null || :`; do \ - install -m0644 $$i debian/$*/usr/share/doc/$*/ || exit 1; \ + @for i in `cat debian/$*.examples 2>/dev/null || :`; do \ + sh -cx "install -m0644 $$i debian/$*/usr/share/doc/$*/examples/" \ + || exit 1; \ done - test ! -r debian/$*.README.Debian || \ - install -m0644 debian/$*.README.Debian \ - debian/$*/usr/share/doc/$*/README.Debian - test ! -r debian/$*.NEWS.Debian || \ - install -m0644 debian/$*.NEWS.Debian \ - debian/$*/usr/share/doc/$*/NEWS.Debian - gzip -9 debian/$*/usr/share/doc/$*/NEWS.Debian || : - : debian/$*/usr/share/doc/$*/ created +%.deb-docs: %.deb-checkdir %.deb-docs-base %.deb-docs-docs %.deb-docs-examples + : debian/$*/usr/share/doc/$*/ ok %.deb-DEBIAN-base: - rm -rf debian/$*/DEBIAN - install -d -m0755 debian/$*/DEBIAN - for i in conffiles shlibs; do \ + @rm -rf debian/$*/DEBIAN + : debian/$*/DEBIAN/ + @install -d -m0755 debian/$*/DEBIAN + @for i in conffiles shlibs; do \ test ! -r debian/$*.$$i || \ - install -m0644 debian/$*.$$i debian/$*/DEBIAN/$$i || exit 1; \ + sh -cx "install -m0644 debian/$*.$$i debian/$*/DEBIAN/$$i" \ + || exit 1; \ done %.deb-DEBIAN-scripts: - for i in preinst prerm postinst postrm; do \ + @for i in preinst prerm postinst postrm; do \ test ! -r debian/$*.$$i || \ - install -m0755 debian/$*.$$i debian/$*/DEBIAN/$$i || exit 1; \ + sh -cx "install -m0755 debian/$*.$$i debian/$*/DEBIAN/$$i" \ + || exit 1; \ done %.deb-DEBIAN-md5sums: - (cd debian/$* && \ - find * -type f ! -regex '^DEBIAN/.*' -print0 |xargs -r0 md5sum \ - >DEBIAN/md5sums) + : debian/$*/DEBIAN/md5sums + @rm -f debian/$*/DEBIAN/md5sums + @cd debian/$* && find * -path 'DEBIAN' -prune -o \ + -type f -exec md5sum {} >>DEBIAN/md5sums \; %.deb-DEBIAN: %.deb-checkdir %.deb-DEBIAN-base %.deb-DEBIAN-scripts \ %.deb-DEBIAN-md5sums - : debian/$*/DEBIAN/ created + : debian/$*/DEBIAN/ ok diff --git a/debian/rules b/debian/rules @@ -96,7 +96,7 @@ install: deb-checkdir deb-checkuid build-stamp install -d -m0755 "$(DIR)"/var/run/getty-5 ln -s /var/run/getty-5 "$(DIR)"/etc/runit/getty-5/supervise # additional docs - install -m0755 -d "$(DIR)"/usr/share/doc/runit/debian + install -d -m0755 "$(DIR)"/usr/share/doc/runit/debian for i in 1 2 3 ctrlaltdel; do \ install -m0644 admin/runit/etc/debian/$$i \ "$(DIR)"/usr/share/doc/runit/debian/; \ diff --git a/doc/svlogd.8.html b/doc/svlogd.8.html @@ -135,15 +135,17 @@ A character not a star (&lsquo;&lsquo;*&rsquo;&rsquo;) and not a plus (&lsquo;&l the next character in <i>pattern</i> in the log message one or more times. A star before the end of <i>pattern</i> matches any string in the log message that does not include the next character in <i>pattern</i>. A star at the end of <i>pattern</i> -matches any string. +matches any string. <p> +Timestamps optionally added by <b>svlogd</b> are not considered +part of the log message. <h2><a name='sect8'>Options</a></h2> <dl> <dt><b>-t</b> </dt> -<dd>timestamp. Prefix each selected line with a -precise timestamp (see <i><b>tai64n</b>(8)</i>) when writing to <i>log</i> or to standard error. -</dd> +<dd>timestamp. Prefix each selected line with +a precise timestamp (see <i><b>tai64n</b>(8)</i>) when writing to <i>log</i> or to standard +error. </dd> <dt><b>-tt</b> </dt> <dd>timestamp. Prefix each selected line with a human readable, sortable diff --git a/man/runit-init.8 b/man/runit-init.8 @@ -6,7 +6,8 @@ init \- a UNIX process no 1 [ 0 | 6 ] .SH DESCRIPTION .B runit-init -is the first process the kernel starts. If +is the first process the kernel starts. +If .B runit-init is started as process no 1, it runs and replaces itself with .BR runit (8). @@ -19,7 +20,8 @@ or .B init 6\fR: .TP .B init 0 -tells the Unix process no 1 to shutdown and halt the system. To signal +tells the Unix process no 1 to shutdown and halt the system. +To signal .BR runit (8) the system halt request, .B runit-init @@ -32,7 +34,8 @@ Then a CONT signal is sent to .BR runit (8). .TP .B init 6 -tells the Unix process no 1 to shutdown and reboot the system. To signal +tells the Unix process no 1 to shutdown and reboot the system. +To signal .BR runit (8) the system reboot request, .B runit-init @@ -47,13 +50,14 @@ and returns 111 on error, 0 in all other cases. .SH SEE ALSO runit(8), +runsvdir(8), +runsvchdir(8), +utmpset(8), runsv(8), runsvctrl(8), runsvstat(8), -runsvdir(8), -runsvchdir(8), -svlogd(8), -utmpset(8) +chpst(8), +svlogd(8) .P http://smarden.org/runit/ .SH AUTHOR diff --git a/man/runit.8 b/man/runit.8 @@ -5,13 +5,14 @@ runit \- a UNIX process no 1 .B runit .SH DESCRIPTION .B runit -must be run as Unix process no 1. It performs the system's -booting, running, and shutdown in three Stages: +must be run as Unix process no 1. +It performs the system's booting, running, and shutdown in three Stages: .SH STAGE 1 .B runit runs .I /etc/runit/1 -and waits for it to terminate. The system's one time tasks are done here. +and waits for it to terminate. +The system's one time tasks are done here. .I /etc/runit/1 has full control of .I /dev/console @@ -26,7 +27,8 @@ will skip stage 2 and enter stage 3. runs .IR /etc/runit/2 , which should not return until system shutdown; if it crashes, it will be -restarted. Normally +restarted. +Normally .I /etc/runit/2 starts .BR runsvdir (8). @@ -74,13 +76,14 @@ receives an INT signal, a ctrl-alt-del keyboard request is triggered. runit-init(8), runsvdir(8), runsvchdir(8), +utmpset(8), runsv(8), runsvctrl(8), runsvstat(8), -svwaitdown(8), -svwaitup(8), +chpst(8), svlogd(8), -utmpset(8) +svwaitdown(8), +svwaitup(8) .P http://smarden.org/runit/ .SH AUTHOR diff --git a/man/runsv.8 b/man/runsv.8 @@ -86,8 +86,7 @@ After it stops, do not restart service. .B o Once. If the service is not running, start it. -Do not restart it if it -stops. +Do not restart it if it stops. .TP .B p Pause. @@ -109,6 +108,9 @@ If the service is running, send it a ALRM signal. Interrupt. If the service is running, send it a INT signal. .TP +.B q +Quit. +If the service is running, send it a QUIT signal. .B 1 User-defined 1. If the service is running, send it a USR1 signal. @@ -172,13 +174,13 @@ exits 0 if it was told to exit. .SH SEE ALSO runsvctrl(8), runsvstat(8), +chpst(8), +svlogd(8), runit(8), runit-init(8), runsvdir(8), runsvchdir(8), -svlogd(8), -svwaitdown(8), -svwaitup(8), +utmpset(8) .P http://smarden.org/runit/ .SH AUTHOR diff --git a/man/runsvchdir.8 b/man/runsvchdir.8 @@ -45,11 +45,14 @@ exits 0 on success. /etc/runit/runsvdir/current.new .SH SEE ALSO runsvdir(8), +runit(8), +runit-init(8), runsv(8), runsvctrl(8), runsvstat(8), -runit(8), -runit-init(8), +chpst(8), +svlogd(8), +utmpset(8), svwaitdown(8), svwaitup(8) .P diff --git a/man/runsvctrl.8 b/man/runsvctrl.8 @@ -28,14 +28,17 @@ which must be controlled by .SH COMMANDS .TP .B up -If the service is not running, start it. If the service stops, restart it. +If the service is not running, start it. +If the service stops, restart it. .TP .B down -If the service is running, send it a TERM signal. If ./run exits, -start ./finish if it exists. After it stops, do not restart service. +If the service is running, send it a TERM signal. +If ./run exits, start ./finish if it exists. +After it stops, do not restart service. .TP .B once -If the service is not running, start it. Do not restart it if it stops. +If the service is not running, start it. +Do not restart it if it stops. .TP .B pause If the service is running, send it a STOP signal. @@ -52,11 +55,16 @@ If the service is running, send it a ALRM signal. .B interrupt If the service is running, send it a INT signal. .TP +.B quit +If the service is running, send it a QUIT signal. +.TP .B 1 -User-defined 1. If the service is running, send it a USR1 signal. +User-defined 1. +If the service is running, send it a USR1 signal. .TP .B 2 -User-defined 2. If the service is running, send it a USR2 signal. +User-defined 2. +If the service is running, send it a USR2 signal. .TP .B term If the service is running, send it a TERM signal. @@ -65,13 +73,17 @@ If the service is running, send it a TERM signal. If the service is running, send it a KILL signal. .TP .B exit -If the service is running, send it a TERM signal. Do not restart the -service. If the service is down, and no log service exists, +If the service is running, send it a TERM signal. +Do not restart the service. +If the service is down, and no log service exists, .BR runsv (8) -exits. If the service is down and a log service exists, send a TERM signal -to the log service. If the log service is down, +exits. +If the service is down and a log service exists, send a TERM signal to the +log service. +If the log service is down, .BR runsv (8) -exits. This command is ignored if it is given to +exits. +This command is ignored if it is given to .IR service /log/supervise/control. .P .BR runsvctrl @@ -90,18 +102,21 @@ that caused an error (e.g. the directory is not controlled by a .BR runsv (8) process), .B runsvctrl -increases the exit code by one and exits non zero. The maximum is 100. +increases the exit code by one and exits non zero. +The maximum is 100. .P .B runsvctrl exits 111 on error. .SH SEE ALSO -runsvstat(8), runsv(8), +runsvstat(8), +chpst(8), +svlogd(8), runit(8), runit-init(8), runsvdir(8), runsvchdir(8), -svlogd(8), +utmpset(8), svwaitdown(8), svwaitup(8) .P diff --git a/man/runsvdir.8 b/man/runsvdir.8 @@ -31,19 +31,21 @@ At least every five seconds, .B runsvdir checks if .I dir -has changed. If it sees a new subdirectory in +has changed. +If it sees a new subdirectory in .IR dir , it starts a new .BR runsv (8) -process. If it sees an old sudirectory where a +process. +If it sees an old sudirectory where a .BR runsv (8) process has exited, it restarts the .BR runsv (8) process. If .B runsvdir -sees a subdirectory being removed that was previously there, it sends -the corresponding +sees a subdirectory being removed that was previously there, it sends the +corresponding .BR runsv (8) process a TERM signal, stops monitoring this process, and so does not restart the @@ -58,12 +60,12 @@ all output to standard error is redirected to this .IR log , which is similar to the .BR readproctitle (8) -log. To see the most recent error messages, use a process-listing tool -such as +log. +To see the most recent error messages, use a process-listing tool such as .BR ps (1). .B runsvdir -writes a dot to the readproctitle log every 15 minutes so that old -error messages expire. +writes a dot to the readproctitle log every 15 minutes so that old error +messages expire. .P Normally .B runsvdir @@ -81,15 +83,17 @@ receives a HUP signal, it sends a TERM signal to each .BR runsv (8) process it is monitoring and then exits with 111. .SH SEE ALSO -runsvchdir(8), runsv(8), -runsvctrl(8), -runsvstat(8), runit(8), runit-init(8), +runsvchdir(8), +runsvctrl(8), +runsvstat(8), +chpst(8), svlogd(8), +utmpset(8), svwaitdown(8), -svwaitup(8), +svwaitup(8) .P http://smarden.org/runit/ .SH AUTHOR diff --git a/man/runsvstat.8 b/man/runsvstat.8 @@ -28,7 +28,8 @@ of the corresponding .SH OPTIONS .TP .B \-l -log service. Check for each +log service. +Check for each .I service if there exists a corresponding .I log @@ -48,18 +49,20 @@ that caused an error (e.g. the directory is not controlled by a .BR runsv (8) process), .B runsvstat -increases the exit code by one and exits non zero. The maximum is 100. +increases the exit code by one and exits non zero. +The maximum is 100. .P .B runsvstat exits 111 on error. .SH SEE ALSO -runsvctrl(8), runsv(8), -runsvdir(8), -runsvchdir(8), +runsvctrl(8), +chpst(8), +svlogd(8), runit(8), runit-init(8), -svlogd(8), +runsvdir(8), +runsvchdir(8), svwaitdown(8), svwaitup(8) .P diff --git a/man/svlogd.8 b/man/svlogd.8 @@ -122,8 +122,8 @@ is started again. .B svlogd also saves any output that the .I processor -writes to file descriptor 5, and make that output available on -file descriptor 4 when it runs +writes to file descriptor 5, and make that output available on file +descriptor 4 when it runs .I processor on the next log file rotation. .P @@ -282,6 +282,10 @@ character in A star at the end of .I pattern matches any string. +.P +Timestamps optionally added by +.B svlogd +are not considered part of the log message. .SH OPTIONS .TP .B \-t @@ -370,12 +374,14 @@ with a non empty log file. .SH SEE ALSO runsv(8), -runsvstat(8), runsvctrl(8), -runsvdir(8), -runsvchdir(8), +runsvstat(8), +chpst(8), runit(8), runit-init(8), +runsvdir(8), +runsvchdir(8), +utmpset(8), multilog(8) .P http://smarden.org/runit/ diff --git a/man/svwaitdown.8 b/man/svwaitdown.8 @@ -95,23 +95,25 @@ For each .I service that causes an error while checking, .B svwaitdown -increases the exit code by one and exits non zero. The maximum is 100. +increases the exit code by one and exits non zero. +The maximum is 100. .P .B svwaitdown returns 111 if the timeout .I sec was reached. .SH SEE ALSO -svwaitdown(8), +svwaitup(8), runsv(8), runsvctrl(8), runsvstat(8), -runsvdir(8), -runsvchdir(8), +chpst(8), +svlogd(8), runit(8), runit-init(8), -supervise(8), -svscan(8) +runsvdir(8), +runsvchdir(8), +utmpset(8) .P http://smarden.org/runit/ http://cr.yp.to/daemontools.html diff --git a/man/svwaitup.8 b/man/svwaitup.8 @@ -13,7 +13,8 @@ svwaitup \- waits for services controlled by runsv(8) or supervise(8) to be up .I services .SH DESCRIPTION .I services -consist of one or more arguments. Each +consist of one or more arguments. +Each .I service directory must start with a slash. .P @@ -49,7 +50,8 @@ has to be up to .I sec seconds. .I sec -must be between 2 and 600. Default is 2. +must be between 2 and 600. +Default is 2. .SH EXIT CODES .B svwaitup returns 0 as soon as all @@ -82,7 +84,8 @@ checking (e.g. .BR runsv (8) is not running), .B svwaitup -increases the exit code by one and exits non zero. The maximum is 100. +increases the exit code by one and exits non zero. +The maximum is 100. .P .B svwaitup returns 111 on error. @@ -91,12 +94,13 @@ svwaitdown(8), runsv(8), runsvctrl(8), runsvstat(8), -runsvdir(8), -runsvchdir(8), +chpst(8), +svlogd(8), runit(8), runit-init(8), -supervise(8), -svscan(8) +runsvdir(8), +runsvchdir(8), +utmpset(8) .P http://smarden.org/runit/ http://cr.yp.to/daemontools.html diff --git a/man/utmpset.8 b/man/utmpset.8 @@ -20,7 +20,8 @@ has logged out. .P Ordinary .BR init (8) -processes handle utmp file records for local login accounting. The +processes handle utmp file records for local login accounting. +The .BR runit (8) program doesn't include code to update the utmp file, the .BR getty (8) @@ -47,13 +48,15 @@ to the wtmp file. .B utmpset returns 111 on error, 1 on wrong usage, 0 in all other cases. .SH SEE ALSO +runit(8), +runit-init(8) +runsvdir(8), +runsvchdir(8), runsv(8), runsvctrl(8), runsvstat(8), -runsvdir(8), -runsvchdir(8), -runit(8), -runit-init(8), +chpst(8), +svlogd(8), getty(8) .P http://smarden.org/runit/ diff --git a/package/CHANGES b/package/CHANGES @@ -1,3 +1,13 @@ +runit 1.0.2 +Sun, 28 Mar 2004 18:16:54 +0000 + * man/svlogd.8: timestamps are not considered when matching patterns (thx + Andras KORN). + * runsv.c: on exit run the finish scripts when taking the service down + (thx X.). + * runsv.c, runsvctrl.c: handle sig_quit (thx Wayne Marshall). + * svlogd.c: don't crash on zero byte long config file (thx Alex Efros). + * man/*: minor cleanup. + runit 1.0.1 Sun, 07 Mar 2004 10:40:40 +0000 * doc/usedietlibc.html: minor. diff --git a/src/runsv.c b/src/runsv.c @@ -308,6 +308,9 @@ int ctrl(struct svdir *s, char c) { case 'i': /* sig int */ if (s->pid) kill(s->pid, SIGINT); break; + case 'q': /* sig quit */ + if (s->pid) kill(s->pid, SIGQUIT); + break; case '1': /* sig usr1 */ if (s->pid) kill(s->pid, SIGUSR1); break; @@ -512,7 +515,7 @@ int main(int argc, char **argv) { if (haslog) if (read(svd[1].fdcontrol, &ch, 1) == 1) ctrl(&svd[1], ch); - if (svd[0].want == W_EXIT && svd[0].pid == 0) { + if (svd[0].want == W_EXIT && svd[0].state == S_DOWN) { if (svd[1].pid == 0) _exit(0); if (svd[1].want != W_EXIT) { svd[1].want =W_EXIT; diff --git a/src/runsvctrl.c b/src/runsvctrl.c @@ -3,7 +3,7 @@ #include "error.h" #include "open.h" -#define USAGE " u|d|o|p|c|h|a|i|1|2|t|k|x|e service ..." +#define USAGE " u|d|o|p|c|h|a|i|q|1|2|t|k|x|e service ..." #define VERSION "$Id$" @@ -53,7 +53,8 @@ int main(int argc, char **argv) { switch ((c =**argv)) { case 'u': case 'd': case 'o': case 'x': case 'e': case 'p': case 'c': - case 'h': case 'a': case 'i': case 't': case 'k': case '1': case '2': + case 'h': case 'a': case 'i': case 't': case 'k': case 'q': case '1': + case '2': break; default: usage(); diff --git a/src/runsvctrl.dist b/src/runsvctrl.dist @@ -1,4 +1,4 @@ -usage: runsvctrl u|d|o|p|c|h|a|i|1|2|t|k|x|e service ... +usage: runsvctrl u|d|o|p|c|h|a|i|q|1|2|t|k|x|e service ... 1 starting diff --git a/src/svlogd.c b/src/svlogd.c @@ -349,7 +349,7 @@ unsigned int logdir_open(struct logdir *ld, const char *fn) { unsigned long port; if (verbose) strerr_warn4(INFO, "read: ", ld->name, "/config", 0); - for (i =0; i < sa.len -1; ++i) { + for (i =0; i +1 < sa.len; ++i) { if ((len =byte_chr(&sa.s[i], sa.len -i, '\n')) == 1) { ++i; continue; }