Ignore:
Timestamp:
Jan 13, 2010, 2:09:30 AM (10 years ago)
Author:
Sam Hocevar
Message:

Rename -t/--max-time to -U/--max-usertime, and add -t/--max-time to
roughly mean "maximum zzuf run time". Fixes bug #45.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • zzuf/trunk/src/zzuf.c

    r4253 r4264  
    159159#endif
    160160#define OPTSTR "+" OPTSTR_REGEX OPTSTR_RLIMIT_MEM OPTSTR_RLIMIT_CPU \
    161                 "a:Ab:B:C:dD:e:f:F:ij:l:mnp:P:qr:R:s:St:vxhV"
     161                "a:Ab:B:C:dD:e:f:F:ij:l:mnp:P:qr:R:s:St:U:vxhV"
    162162#define MOREINFO "Try `%s --help' for more information.\n"
    163163        int option_index = 0;
     
    165165        {
    166166            /* Long option, needs arg, flag, short option */
    167             { "allow",      1, NULL, 'a' },
    168             { "autoinc",     0, NULL, 'A' },
    169             { "bytes",       1, NULL, 'b' },
    170             { "max-bytes",   1, NULL, 'B' },
    171 #if defined HAVE_REGEX_H
    172             { "cmdline",     0, NULL, 'c' },
    173 #endif
    174             { "max-crashes", 1, NULL, 'C' },
    175             { "debug",       0, NULL, 'd' },
    176             { "delay",       1, NULL, 'D' },
    177 #if defined HAVE_REGEX_H
    178             { "exclude",     1, NULL, 'E' },
    179 #endif
    180             { "fuzzing",     1, NULL, 'f' },
    181             { "stdin",       0, NULL, 'i' },
    182 #if defined HAVE_REGEX_H
    183             { "include",     1, NULL, 'I' },
    184 #endif
    185             { "jobs",        1, NULL, 'j' },
    186             { "list",        1, NULL, 'l' },
    187             { "md5",         0, NULL, 'm' },
    188             { "max-memory",  1, NULL, 'M' },
    189             { "network",     0, NULL, 'n' },
    190             { "ports",       1, NULL, 'p' },
    191             { "protect",     1, NULL, 'P' },
    192             { "quiet",       0, NULL, 'q' },
    193             { "ratio",       1, NULL, 'r' },
    194             { "refuse",      1, NULL, 'R' },
    195             { "seed",        1, NULL, 's' },
    196             { "signal",      0, NULL, 'S' },
    197             { "max-time",    1, NULL, 't' },
    198             { "max-cputime", 1, NULL, 'T' },
    199             { "verbose",     0, NULL, 'v' },
    200             { "check-exit",  0, NULL, 'x' },
    201             { "help",        0, NULL, 'h' },
    202             { "version",     0, NULL, 'V' },
    203             { NULL,          0, NULL,  0  }
     167            { "allow",        1, NULL, 'a' },
     168            { "autoinc",      0, NULL, 'A' },
     169            { "bytes",        1, NULL, 'b' },
     170            { "max-bytes",    1, NULL, 'B' },
     171#if defined HAVE_REGEX_H
     172            { "cmdline",      0, NULL, 'c' },
     173#endif
     174            { "max-crashes",  1, NULL, 'C' },
     175            { "debug",        0, NULL, 'd' },
     176            { "delay",        1, NULL, 'D' },
     177#if defined HAVE_REGEX_H
     178            { "exclude",      1, NULL, 'E' },
     179#endif
     180            { "fuzzing",      1, NULL, 'f' },
     181            { "stdin",        0, NULL, 'i' },
     182#if defined HAVE_REGEX_H
     183            { "include",      1, NULL, 'I' },
     184#endif
     185            { "jobs",         1, NULL, 'j' },
     186            { "list",         1, NULL, 'l' },
     187            { "md5",          0, NULL, 'm' },
     188            { "max-memory",   1, NULL, 'M' },
     189            { "network",      0, NULL, 'n' },
     190            { "ports",        1, NULL, 'p' },
     191            { "protect",      1, NULL, 'P' },
     192            { "quiet",        0, NULL, 'q' },
     193            { "ratio",        1, NULL, 'r' },
     194            { "refuse",       1, NULL, 'R' },
     195            { "seed",         1, NULL, 's' },
     196            { "signal",       0, NULL, 'S' },
     197            { "max-time",     1, NULL, 't' },
     198            { "max-cputime",  1, NULL, 'T' },
     199            { "max-usertime", 1, NULL, 'U' },
     200            { "verbose",      0, NULL, 'v' },
     201            { "check-exit",   0, NULL, 'x' },
     202            { "help",         0, NULL, 'h' },
     203            { "version",      0, NULL, 'V' },
     204            { NULL,           0, NULL,  0  }
    204205        };
    205206        int c = mygetopt(argc, argv, OPTSTR, long_options, &option_index);
     
    334335            if(myoptarg[0] == '=')
    335336                myoptarg++;
    336             opts->maxtime = (int64_t)(atof(myoptarg) * 1000000.0);
     337            opts->maxtime = (int64_t)atoll(myoptarg) * 1000000;
    337338            break;
    338339#if defined HAVE_SETRLIMIT && defined ZZUF_RLIMIT_CPU
     
    343344            break;
    344345#endif
     346        case 'U': /* --max-usertime */
     347            if(myoptarg[0] == '=')
     348                myoptarg++;
     349            opts->maxusertime = (int64_t)(atof(myoptarg) * 1000000.0);
     350            break;
    345351        case 'x': /* --check-exit */
    346352            opts->checkexit = 1;
     
    480486            && opts->nchild == 0)
    481487            break;
     488
     489        if(opts->maxtime && _zz_time() - opts->starttime >= opts->maxtime
     490            && opts->nchild == 0)
     491            break;
    482492    }
    483493
     
    633643        return; /* all jobs crashed */
    634644
     645    if(opts->maxtime && now - opts->starttime >= opts->maxtime)
     646        return; /* run time exceeded */
     647
    635648    if(opts->delay > 0 && opts->lastlaunch + opts->delay > now)
    636649        return; /* too early */
     
    696709
    697710        if(opts->child[i].status == STATUS_RUNNING
    698             && opts->maxtime >= 0
    699             && now > opts->child[i].date + opts->maxtime)
     711            && opts->maxusertime >= 0
     712            && now > opts->child[i].date + opts->maxusertime)
    700713        {
    701714            if(opts->verbose)
     
    981994    printf("         ... <start:stop>   specify a seed range\n");
    982995    printf("  -S, --signal              prevent children from diverting crashing signals\n");
    983     printf("  -t, --max-time <n>        kill children that run for more than <n> seconds\n");
     996    printf("  -t, --max-time <n>        stop spawning children after <n> seconds\n");
    984997    printf("  -T, --max-cputime <n>     kill children that use more than <n> CPU seconds\n");
     998    printf("  -U, --max-usertime <n>    kill children that run for more than <n> seconds\n");
    985999    printf("  -v, --verbose             print information during the run\n");
    9861000    printf("  -x, --check-exit          report processes that exit with a non-zero status\n");
Note: See TracChangeset for help on using the changeset viewer.