Release 1.2.9.
[misc] / mtimeout.c
index 055ef7e..b376e8e 100644 (file)
@@ -361,7 +361,7 @@ static void timeout(struct timeval *now, void *p)
     ta = &t->ta[t->ip++];
     switch (ta->act) {
       case TA_MOAN:
-       moan(ta->u.s);
+       moan("%s", ta->u.s);
        break;
       case TA_KILL:
        kill(-t->kid, ta->u.i);
@@ -480,16 +480,31 @@ int main(int argc, char *const argv[])
       { "help",                        0,              0,      'h' },
       { "version",             0,              0,      'v' },
       { "usage",               0,              0,      'u' },
+      { "no-kill",             0,              0,      'K' },
+      { "kill-after",          OPTF_ARGREQ,    0,      'k' },
+      { "bored-after",         OPTF_ARGREQ,    0,      'b' },
       { "signal",              OPTF_ARGREQ,    0,      's' },
       { 0,                     0,              0,      0 }
     };
 
-    int i = mdwopt(argc, argv, "+hvus:", opts, 0, 0, 0);
+    int i = mdwopt(argc, argv, "+hvuKb:k:s:", opts, 0, 0, 0);
     if (i < 0) break;
     switch (i) {
       case 'h': help(stdout); exit(0);
       case 'v': version(stdout); exit(0);
       case 'u': usage(stdout); exit(0);
+      case 'b':
+       ta[taoff_boredwait].act = TA_WAIT;
+       strtotime(optarg, &ta[taoff_boredwait].u.tv);
+       break;
+      case 'k':
+       ta[taoff_killwait].act = TA_WAIT;
+       strtotime(optarg, &ta[taoff_killwait].u.tv);
+       break;
+      case 'K':
+       ta[taoff_killwait].act = TA_GOTO;
+       ta[taoff_killwait].u.i = taoff_boredwait;
+       break;
       case 's':
        if ((ta[taoff_sig].u.i = namesig(optarg)) < 0)
          die(253, "bad signal spec `%s'", optarg);