summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--usr/src/cmd/xargs/xargs.c12
-rw-r--r--usr/src/man/man1/xargs.17
2 files changed, 14 insertions, 5 deletions
diff --git a/usr/src/cmd/xargs/xargs.c b/usr/src/cmd/xargs/xargs.c
index 517c33c7e1..26feb9bdf6 100644
--- a/usr/src/cmd/xargs/xargs.c
+++ b/usr/src/cmd/xargs/xargs.c
@@ -21,7 +21,7 @@
/*
* Copyright 2014 Garrett D'Amore <garrett@damore.org>
* Copyright 2012 DEY Storage Systems, Inc.
- * Copyright (c) 2017, Joyent, Inc.
+ * Copyright (c) 2018, Joyent, Inc.
*
* Portions of this file developed by DEY Storage Systems, Inc. are licensed
* under the terms of the Common Development and Distribution License (CDDL)
@@ -163,7 +163,7 @@ int
main(int argc, char **argv)
{
int j;
- unsigned long l;
+ long l;
struct inserts *psave;
int c;
int initsize;
@@ -316,13 +316,19 @@ main(int argc, char **argv)
case 'P': /* -P maxprocs: # of child processses */
errno = 0;
- l = strtoul(optarg, &eptr, 10);
+ l = strtol(optarg, &eptr, 10);
if (*eptr != '\0' || errno != 0) {
ermsg(_("failed to parse maxprocs (-P): %s\n"),
optarg);
break;
}
+ if (l < 0) {
+ ermsg(_("maximum number of processes (-P) "
+ "cannot be negative\n"));
+ break;
+ }
+
/*
* Come up with an upper bound that'll probably fit in
* memory.
diff --git a/usr/src/man/man1/xargs.1 b/usr/src/man/man1/xargs.1
index 2647192818..42e8ea4959 100644
--- a/usr/src/man/man1/xargs.1
+++ b/usr/src/man/man1/xargs.1
@@ -43,8 +43,9 @@
.\" Copyright 1989 AT&T
.\" Copyright (c) 1992, X/Open Company Limited. All Rights Reserved.
.\" Portions Copyright (c) 2007, Sun Microsystems, Inc. All Rights Reserved.
+.\" Copyright (c) 2018, Joyent, Inc.
.\"
-.TH XARGS 1 "May 28, 2017"
+.TH XARGS 1 "September 13, 2018"
.SH NAME
xargs \- construct argument lists and invoke utility
.SH SYNOPSIS
@@ -211,7 +212,9 @@ otherwise, that particular invocation of \fIutility\fR is skipped.
.ad
.RS 15n
Invokes \fIutility\fR using at most \fImaxprocs\fR (a positive decimal integer)
-parallel child processes.
+parallel child processes. If \fImaxprocs\fR is zero, then the system
+will set a large upper bound to try and run as many processes as
+possible.
.RE
.sp