git: 1048a870e3b6 - main - xargs: disallow -R0 and -L0

From: Dag-Erling Smørgrav <des_at_FreeBSD.org>
Date: Thu, 13 Jul 2023 21:37:25 UTC
The branch main has been updated by des:

URL: https://cgit.FreeBSD.org/src/commit/?id=1048a870e3b6973a5be1193f3b45e6e867e8e1c0

commit 1048a870e3b6973a5be1193f3b45e6e867e8e1c0
Author:     Daniel Tameling <tamelingdaniel@gmail.com>
AuthorDate: 2023-07-13 20:06:31 +0000
Commit:     Dag-Erling Smørgrav <des@FreeBSD.org>
CommitDate: 2023-07-13 21:35:23 +0000

    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
---
 usr.bin/xargs/xargs.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/usr.bin/xargs/xargs.c b/usr.bin/xargs/xargs.c
index 94a32d04fd67..e6f8619bb8d1 100644
--- a/usr.bin/xargs/xargs.c
+++ b/usr.bin/xargs/xargs.c
@@ -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 */