diff options
author | jkoshy <jkoshy@FreeBSD.org> | 1998-06-17 12:58:43 +0000 |
---|---|---|
committer | jkoshy <jkoshy@FreeBSD.org> | 1998-06-17 12:58:43 +0000 |
commit | 56c4243e86446894f4ee2896bf3a3dc336d2052e (patch) | |
tree | e83f598d2bb76be6d9f58335d3b9bc0aa9dfc2fd /usr.bin/xargs | |
parent | a1e69b9f8361e6197a54f43858f201b2633b759f (diff) | |
download | FreeBSD-src-56c4243e86446894f4ee2896bf3a3dc336d2052e.zip FreeBSD-src-56c4243e86446894f4ee2896bf3a3dc336d2052e.tar.gz |
Remove compile time dependency on ARG_MAX.
This fix only removes the dependency on compile time constants. The code
has other (old) problems that need to be addressed.
PR: 1791
Reviewed-by: bde, tegge
Diffstat (limited to 'usr.bin/xargs')
-rw-r--r-- | usr.bin/xargs/xargs.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/usr.bin/xargs/xargs.c b/usr.bin/xargs/xargs.c index 11cac93..d5cf527 100644 --- a/usr.bin/xargs/xargs.c +++ b/usr.bin/xargs/xargs.c @@ -45,13 +45,12 @@ static const char copyright[] = static char sccsid[] = "@(#)xargs.c 8.1 (Berkeley) 6/6/93"; #endif static const char rcsid[] = - "$Id$"; + "$Id: xargs.c,v 1.5 1997/08/27 06:26:23 charnier Exp $"; #endif /* not lint */ #include <sys/types.h> #include <sys/wait.h> #include <err.h> -#include <limits.h> #include <stdio.h> #include <stdlib.h> #include <string.h> @@ -73,6 +72,7 @@ main(argc, argv, env) register char *p, *bbp, *ebp, **bxp, **exp, **xp; int cnt, indouble, insingle, nargs, nflag, nline, xflag; char **av, *argp, **ep = env; + long arg_max; /* * POSIX.2 limits the exec line length to ARG_MAX - 2K. Running that @@ -88,7 +88,9 @@ main(argc, argv, env) * probably not worthwhile. */ nargs = 5000; - nline = ARG_MAX - 4 * 1024; + if ((arg_max = sysconf(_SC_ARG_MAX)) == -1) + errx(1, "sysconf(_SC_ARG_MAX) failed"); + nline = arg_max - 4 * 1024; while (*ep) { /* 1 byte for each '\0' */ nline -= strlen(*ep++) + 1 + sizeof(*ep); |