svlogd: fix timestamping; do not warn if config is missing
authorDenis Vlasenko <vda.linux@googlemail.com>
Fri, 3 Aug 2007 10:58:12 +0000 (10:58 -0000)
committerDenis Vlasenko <vda.linux@googlemail.com>
Fri, 3 Aug 2007 10:58:12 +0000 (10:58 -0000)
sv: extend help text

include/usage.h
runit/sv.c
runit/svlogd.c

index d4d923beb376c4c986b94a9aaed09d4d20d67849..9c14f4508600713f4b95625bba7fadf5fe73e956 100644 (file)
@@ -3256,8 +3256,18 @@ USE_FEATURE_RUN_PARTS_FANCY("\n  -l      Prints names of all matching files even when
 #define sv_trivial_usage \
        "[-v] [-w sec] command service..."
 #define sv_full_usage \
-       "Report the current status and control the state of services " \
-       "monitored by the runsv supervisor"
+       "Control services monitored by runsv supervisor.\n" \
+       "Commands (only first character is enough):\n" \
+       "\n" \
+       "status: query service status\n" \
+       "up: if service isn't running, start it. If service stops, restart it\n" \
+       "once: like 'up', but if service stops, don't restart it\n" \
+       "down: send TERM and CONT signals. If ./run exits, start ./finish\n" \
+       "    if it exists. After it stops, do not restart service\n" \
+       "exit: send TERM and CONT signals to service and log service. If they exit,\n" \
+       "    runsv exits too\n" \
+       "pause, cont, hup, alarm, interrupt, quit, 1, 2, term, kill: send\n" \
+       "STOP, CONT, HUP, ALRM, INT, QUIT, USR1, USR2, TERM, KILL signal to service"
 
 #define svlogd_trivial_usage \
        "[-ttv] [-r c] [-R abc] [-l len] [-b buflen] dir..."
index a918bb7bdc12ff5263dd013ac4605e332392adf2..9181fff75366a53987a4f5a4ca0b5f74f01bcafc 100644 (file)
@@ -36,7 +36,7 @@ The sv program reports the current status and controls the state of services
 monitored by the runsv(8) supervisor.
 
 services consists of one or more arguments, each argument naming a directory
-service used by runsv(8). If service doesn?t start with a dot or slash,
+service used by runsv(8). If service doesn't start with a dot or slash,
 it is searched in the default services directory /var/service/, otherwise
 relative to the current directory.
 
@@ -72,6 +72,8 @@ exit
 
 sv actually looks only at the first character of above commands.
 
+Commands compatible to LSB init script actions:
+
 status
     Same as status.
 start
@@ -104,7 +106,7 @@ force-restart
     7 seconds for the service to restart. Then report the status, and
     on timeout send the service the kill command. If the script ./check
     exists in the service directory, sv runs this script to check whether
-    the service is up and available again; it?s considered to be available
+    the service is up and available again; it's considered to be available
     if ./check exits with 0.
 force-shutdown
     Same as exit, but wait up to 7 seconds for the runsv(8) process to
index b271b743f9e918d3c36f39cc7d4ddb69f05f0bbf..e16043e443e5c404994e75201e593bca0a3dca26 100644 (file)
@@ -465,8 +465,8 @@ static unsigned logdir_open(struct logdir *ld, const char *fn)
 
        /* read config */
        i = open_read_close("config", buf, sizeof(buf));
-       if (i < 0)
-               warn2("cannot read config", ld->name);
+       if (i < 0 && errno != ENOENT)
+               bb_perror_msg(WARNING": %s/config", ld->name);
        if (i > 0) {
                if (verbose) bb_error_msg(INFO"read: %s/config", ld->name);
                s = buf;
@@ -835,19 +835,8 @@ int svlogd_main(int argc, char **argv)
                char ch;
 
                lineptr = line;
-               taia_now(&now);
-               /* Prepare timestamp if needed */
-               if (timestamp) {
-                       switch (timestamp) {
-                       case 1:
-                               fmt_taia25(stamp, &now);
-                               break;
-                       default: /* case 2: */
-                               fmt_ptime30nul(stamp, &now);
-                               break;
-                       }
+               if (timestamp)
                        lineptr += 26;
-               }
 
                /* lineptr[0..linemax-1] - buffer for stdin */
                /* (possibly has some unprocessed data from prev loop) */
@@ -857,6 +846,7 @@ int svlogd_main(int argc, char **argv)
                if (!np && !exitasap) {
                        i = linemax - stdin_cnt; /* avail. bytes at tail */
                        if (i >= 128) {
+                               taia_now(&now);
                                i = buffer_pread(0, lineptr + stdin_cnt, i, &now);
                                if (i <= 0) /* EOF or error on stdin */
                                        exitasap = 1;
@@ -889,6 +879,11 @@ int svlogd_main(int argc, char **argv)
                printlen = linelen;
                printptr = lineptr;
                if (timestamp) {
+                       taia_now(&now);
+                       if (timestamp == 1)
+                               fmt_taia25(stamp, &now);
+                       else /* 2: */
+                               fmt_ptime30nul(stamp, &now);
                        printlen += 26;
                        printptr -= 26;
                        memcpy(printptr, stamp, 25);