summaryrefslogtreecommitdiffstats
path: root/usr.bin/xargs
diff options
context:
space:
mode:
authorcharnier <charnier@FreeBSD.org>1997-08-27 06:26:23 +0000
committercharnier <charnier@FreeBSD.org>1997-08-27 06:26:23 +0000
commitc70b56d9e724acd6d71052effa12216782a0856e (patch)
tree56447bd4f713b1410a8574a9bda7ed1e622080f4 /usr.bin/xargs
parent4e4e5cd87be2aa1eed80d99eb6f8b865742d4bfb (diff)
downloadFreeBSD-src-c70b56d9e724acd6d71052effa12216782a0856e.zip
FreeBSD-src-c70b56d9e724acd6d71052effa12216782a0856e.tar.gz
Use err(3) instead of local redefinition.
Diffstat (limited to 'usr.bin/xargs')
-rw-r--r--usr.bin/xargs/xargs.116
-rw-r--r--usr.bin/xargs/xargs.c70
2 files changed, 30 insertions, 56 deletions
diff --git a/usr.bin/xargs/xargs.1 b/usr.bin/xargs/xargs.1
index ab10647..a2911a0 100644
--- a/usr.bin/xargs/xargs.1
+++ b/usr.bin/xargs/xargs.1
@@ -52,7 +52,7 @@
.Op Ar utility Op Ar arguments ...
.Sh DESCRIPTION
The
-.Nm xargs
+.Nm
utility reads space, tab, newline and end-of-file delimited arguments
from the standard input and executes the specified
.Ar utility
@@ -82,7 +82,7 @@ The options are as follows:
.Bl -tag -width indent
.It Fl 0
Changes
-.Nm xargs
+.Nm
to expect NUL
(``\\0'')
characters as seperators, instead of spaces and newlines.
@@ -126,7 +126,7 @@ Echo the command to be executed to standard error immediately before it
is executed.
.It Fl x
Force
-.Nm xargs
+.Nm
to terminate immediately if a command line containing
.Ar number
arguments will not fit in the specified (or default) command line length.
@@ -143,7 +143,7 @@ Undefined behavior may occur if
reads from the standard input.
.Pp
The
-.Nm xargs
+.Nm
utility exits immediately (without processing any further input) if a
command line cannot be assembled,
.Ar utility
@@ -151,22 +151,22 @@ cannot be invoked, an invocation of the utility is terminated by a signal
or an invocation of the utility exits with a value of 255.
.Pp
The
-.Nm xargs
+.Nm
utility exits with a value of 0 if no error occurs.
If
.Ar utility
cannot be invoked,
-.Nm xargs
+.Nm
exits with a value of 127.
If any other error occurs,
-.Nm xargs
+.Nm
exits with a value of 1.
.Sh SEE ALSO
.Xr echo 1 ,
.Xr find 1
.Sh STANDARDS
The
-.Nm xargs
+.Nm
utility is expected to be
.St -p1003.2
compliant.
diff --git a/usr.bin/xargs/xargs.c b/usr.bin/xargs/xargs.c
index a0e8c0d..11cac93 100644
--- a/usr.bin/xargs/xargs.c
+++ b/usr.bin/xargs/xargs.c
@@ -35,32 +35,36 @@
*/
#ifndef lint
-static char copyright[] =
+static const char copyright[] =
"@(#) Copyright (c) 1990, 1993\n\
The Regents of the University of California. All rights reserved.\n";
#endif /* not lint */
#ifndef lint
+#if 0
static char sccsid[] = "@(#)xargs.c 8.1 (Berkeley) 6/6/93";
+#endif
+static const char rcsid[] =
+ "$Id$";
#endif /* not lint */
#include <sys/types.h>
#include <sys/wait.h>
-#include <errno.h>
+#include <err.h>
+#include <limits.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
-#include <limits.h>
#include "pathnames.h"
int tflag, rval;
int zflag;
-void err __P((const char *, ...));
void run __P((char **));
-void usage __P((void));
+static void usage __P((void));
+int
main(argc, argv, env)
int argc;
char **argv, **env;
@@ -95,7 +99,7 @@ main(argc, argv, env)
case 'n':
nflag = 1;
if ((nargs = atoi(optarg)) <= 0)
- err("illegal argument count");
+ errx(1, "illegal argument count");
break;
case 's':
nline = atoi(optarg);
@@ -126,7 +130,7 @@ main(argc, argv, env)
*/
if (!(av = bxp =
malloc((u_int)(1 + argc + nargs + 1) * sizeof(char **))))
- err("%s", strerror(errno));
+ errx(1, "malloc");
/*
* Use the user's name for the utility as argv[0], just like the
@@ -159,10 +163,10 @@ main(argc, argv, env)
*/
nline -= cnt;
if (nline <= 0)
- err("insufficient space for command");
+ errx(1, "insufficient space for command");
if (!(bbp = malloc((u_int)nline + 1)))
- err("%s", strerror(errno));
+ errx(1, "malloc");
ebp = (argp = p = bbp) + nline - 1;
for (insingle = indouble = 0;;)
@@ -199,7 +203,7 @@ main(argc, argv, env)
/* Quotes do not escape newlines. */
arg1: if (insingle || indouble)
- err("unterminated quote");
+ errx(1, "unterminated quote");
arg2: *p = '\0';
*xp++ = argp;
@@ -211,7 +215,7 @@ arg2: *p = '\0';
*/
if (xp == exp || p == ebp || ch == EOF) {
if (xflag && xp != exp && p == ebp)
- err("insufficient space for arguments");
+ errx(1, "insufficient space for arguments");
*xp = NULL;
run(av);
if (ch == EOF)
@@ -237,7 +241,7 @@ arg2: *p = '\0';
goto addch;
/* Backslash escapes anything, is escaped by quotes. */
if (!insingle && !indouble && (ch = getchar()) == EOF)
- err("backslash at EOF");
+ errx(1, "backslash at EOF");
/* FALLTHROUGH */
default:
addch: if (p < ebp) {
@@ -247,10 +251,10 @@ addch: if (p < ebp) {
/* If only one argument, not enough buffer space. */
if (bxp == xp)
- err("insufficient space for argument");
+ errx(1, "insufficient space for argument");
/* Didn't hit argument limit, so if xflag object. */
if (xflag)
- err("insufficient space for arguments");
+ errx(1, "insufficient space for arguments");
*xp = NULL;
run(av);
@@ -283,17 +287,16 @@ run(argv)
noinvoke = 0;
switch(pid = vfork()) {
case -1:
- err("vfork: %s", strerror(errno));
+ err(1, "vfork");
case 0:
execvp(argv[0], argv);
- (void)fprintf(stderr,
- "xargs: %s: %s\n", argv[0], strerror(errno));
+ warn("%s", argv[0]);
noinvoke = 1;
_exit(1);
}
pid = waitpid(pid, &status, 0);
if (pid == -1)
- err("waitpid: %s", strerror(errno));
+ err(1, "waitpid");
/* If we couldn't invoke the utility, exit 127. */
if (noinvoke)
exit(127);
@@ -304,39 +307,10 @@ run(argv)
rval = 1;
}
-void
+static void
usage()
{
(void)fprintf(stderr,
"usage: xargs [-0] [-t] [-n number [-x]] [-s size] [utility [argument ...]]\n");
exit(1);
}
-
-#if __STDC__
-#include <stdarg.h>
-#else
-#include <varargs.h>
-#endif
-
-void
-#if __STDC__
-err(const char *fmt, ...)
-#else
-err(fmt, va_alist)
- char *fmt;
- va_dcl
-#endif
-{
- va_list ap;
-#if __STDC__
- va_start(ap, fmt);
-#else
- va_start(ap);
-#endif
- (void)fprintf(stderr, "xargs: ");
- (void)vfprintf(stderr, fmt, ap);
- va_end(ap);
- (void)fprintf(stderr, "\n");
- exit(1);
- /* NOTREACHED */
-}
OpenPOWER on IntegriCloud