runsv: another tiny optimization
authorDenis Vlasenko <vda.linux@googlemail.com>
Thu, 26 Feb 2009 12:38:01 +0000 (12:38 -0000)
committerDenis Vlasenko <vda.linux@googlemail.com>
Thu, 26 Feb 2009 12:38:01 +0000 (12:38 -0000)
function                                             old     new   delta
startservice                                         297     288      -9
ctrl                                                 435     426      -9

runit/runsv.c

index 4155b8f43b552b2aa84d89e68ff9835bf225c6fa..6d34dc133005de7a4b6022327d5d6deb6f6ad3fc 100644 (file)
@@ -304,15 +304,14 @@ static void stopservice(struct svdir *s)
 static void startservice(struct svdir *s)
 {
        int p;
-       char *run[2];
+       const char *run;
 
        if (s->state == S_FINISH)
-               run[0] = (char*)"./finish";
+               run = "./finish";
        else {
-               run[0] = (char*)"./run";
+               run = "./run";
                custom(s, 'u');
        }
-       run[1] = NULL;
 
        if (s->pid != 0)
                stopservice(s); /* should never happen */
@@ -340,8 +339,8 @@ static void startservice(struct svdir *s)
                        , SIG_DFL);*/
                sig_unblock(SIGCHLD);
                sig_unblock(SIGTERM);
-               execvp(*run, run);
-               fatal2_cannot(s->islog ? "start log/" : "start ", *run);
+               execl(run, run, (char *) NULL);
+               fatal2_cannot(s->islog ? "start log/" : "start ", run);
        }
        /* parent */
        if (s->state != S_FINISH) {
@@ -395,8 +394,7 @@ static int ctrl(struct svdir *s, char c)
        case 'c': /* sig cont */
                if (s->pid && !custom(s, c))
                        kill(s->pid, SIGCONT);
-               if (s->ctrl & C_PAUSE)
-                       s->ctrl &= ~C_PAUSE;
+               s->ctrl &= ~C_PAUSE;
                update_status(s);
                break;
        case 'o': /* once */