David Gwynne([email protected]) on 2017.04.19 11:41:40 +1000:
> i cant remember why i was looking at this, but strtoll annoys me.
>
> ok?
ok, especially since the old code fails on
$ make -j a5 all
but not on
$ make -j 5a all
:-)
> Index: main.c
> ===================================================================
> RCS file: /cvs/src/usr.bin/make/main.c,v
> retrieving revision 1.119
> diff -u -p -r1.119 main.c
> --- main.c 4 Jan 2016 10:59:23 -0000 1.119
> +++ main.c 19 Apr 2017 01:39:22 -0000
> @@ -310,14 +310,14 @@ MainParseArgs(int argc, char **argv)
> Lst_AtEnd(&makefiles, optarg);
> break;
> case 'j': {
> - char *endptr;
> + const char *errstr;
>
> forceJobs = true;
> - maxJobs = strtol(optarg, &endptr, 0);
> - if (endptr == optarg) {
> + maxJobs = strtonum(optarg, 1, INT_MAX, &errstr);
> + if (errstr != NULL) {
> fprintf(stderr,
> - "make: illegal argument to -j option --
> %s -- not a number\n",
> - optarg);
> + "make: illegal argument to -j option"
> + " -- %s -- %s\n", optarg, errstr);
> usage();
> }
> record_option(c, optarg);
>