On 12/1/18 1:44 AM, Klemens Nanni wrote:
> Base 10 suffices, negative numbers should be invalid (not converted) and
> zero not treated specially:
>
> # apmd -dt -1
> apmd: kevent loop: Invalid argument
> # apmd -dt 0
> usage: apmd [-AadHLs] [-f devname] [-S sockname] [-t seconds] [-Z
> percent] [-z percent]
> # apmd -dt 1
> ^C
>
> # ./obj/apmd -dt -1
> apmd: too small seconds: -1
> # ./obj/apmd -dt 0
> apmd: too small seconds: 0
> # ./obj/apmd -dt 1
> ^C
>
> errstr is precise enough, so drop the "Invalid argument" by using just
> err() while here.
I wouldn't object to changing it to errx, but I reckon this is fine
as is. Changing it as you propose would be weird anyway:
$ ./obj/apmd -z -10
apmd: too small percentage: -10: Result too large
If you change the -t case to errc like the rest OK martijn@
>
> Feedback? OK?
>
> Index: apmd.c
> ===================================================================
> RCS file: /cvs/src/usr.sbin/apmd/apmd.c,v
> retrieving revision 1.82
> diff -u -p -r1.82 apmd.c
> --- apmd.c 30 Nov 2018 18:05:31 -0000 1.82
> +++ apmd.c 1 Dec 2018 00:33:24 -0000
> @@ -392,9 +392,9 @@ main(int argc, char *argv[])
> sockname = optarg;
> break;
> case 't':
> - ts.tv_sec = strtoul(optarg, NULL, 0);
> - if (ts.tv_sec == 0)
> - usage();
> + ts.tv_sec = strtonum(optarg, 1, LLONG_MAX, &errstr);
> + if (errstr != NULL)
> + err(1, "%s seconds: %s", errstr, optarg);
> break;
> case 's': /* status only */
> statonly = 1;
> @@ -422,15 +422,13 @@ main(int argc, char *argv[])
> autoaction = AUTO_HIBERNATE;
> autolimit = strtonum(optarg, 1, 100, &errstr);
> if (errstr != NULL)
> - errc(1, EINVAL, "%s percentage: %s", errstr,
> - optarg);
> + err(1, "%s percentage: %s", errstr, optarg);
> break;
> case 'z':
> autoaction = AUTO_SUSPEND;
> autolimit = strtonum(optarg, 1, 100, &errstr);
> if (errstr != NULL)
> - errc(1, EINVAL, "%s percentage: %s", errstr,
> - optarg);
> + err(1, "%s percentage: %s", errstr, optarg);
> break;
> case '?':
> default:
>