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