xargs: disallow -R0 and -L0

Both cases were interpreted as these flags are unset. This meant that
-R0 got converted to -R5 and that -L0 didn't have any effect at all.
Since make at most 0 replacements isn't useful and since call utility
for every 0 lines read doesn't make sense, throw an error for these
two cases.

MFC after:	1 week
Reviewed by:	des, kevans
Differential Revision:	https://reviews.freebsd.org/D41022
This commit is contained in:
Daniel Tameling 2023-07-13 20:06:31 +00:00 committed by Dag-Erling Smørgrav
parent 202adb2236
commit 1048a870e3

View File

@ -174,7 +174,7 @@ main(int argc, char *argv[])
replstr = optarg;
break;
case 'L':
Lflag = (int)strtonum(optarg, 0, INT_MAX, &errstr);
Lflag = (int)strtonum(optarg, 1, INT_MAX, &errstr);
if (errstr)
errx(1, "-%c %s: %s", ch, optarg, errstr);
break;
@ -203,6 +203,8 @@ main(int argc, char *argv[])
Rflag = (int)strtonum(optarg, INT_MIN, INT_MAX, &errstr);
if (errstr)
errx(1, "-%c %s: %s", ch, optarg, errstr);
if (!Rflag)
errx(1, "-%c %s: %s", ch, optarg, "must be non-zero");
break;
case 'r':
/* GNU compatibility */