version 1.18, 2021/09/02 21:50:24 |
version 1.19, 2021/09/04 11:49:11 |
|
|
|
|
ret = strtod(duration, &suffix); |
ret = strtod(duration, &suffix); |
if (ret == 0 && suffix == duration) |
if (ret == 0 && suffix == duration) |
errx(1, "invalid duration"); |
errx(1, "duration is not a number"); |
if (ret < 0 || ret >= 100000000UL) |
if (ret < 0 || ret >= 100000000UL) |
errx(1, "invalid duration"); |
errx(1, "duration out of range"); |
|
|
if (suffix == NULL || *suffix == '\0') |
if (suffix == NULL || *suffix == '\0') |
return (ret); |
return (ret); |
|
|
if (suffix != NULL && *(suffix + 1) != '\0') |
if (suffix[1] != '\0') |
errx(1, "invalid duration"); |
errx(1, "duration unit suffix too long"); |
|
|
switch (*suffix) { |
switch (*suffix) { |
case 's': |
case 's': |
|
|
ret *= 60 * 60 * 24; |
ret *= 60 * 60 * 24; |
break; |
break; |
default: |
default: |
errx(1, "invalid duration"); |
errx(1, "duration unit suffix is invalid"); |
} |
} |
|
|
return (ret); |
return (ret); |
|
|
signal(SIGTTOU, SIG_DFL); |
signal(SIGTTOU, SIG_DFL); |
|
|
execvp(argv[0], argv); |
execvp(argv[0], argv); |
err(1, "execvp"); |
err(1, "%s", argv[0]); |
} |
} |
|
|
/* parent continues here */ |
/* parent continues here */ |