diff options
author | charnier <charnier@FreeBSD.org> | 1997-08-27 06:26:23 +0000 |
---|---|---|
committer | charnier <charnier@FreeBSD.org> | 1997-08-27 06:26:23 +0000 |
commit | c70b56d9e724acd6d71052effa12216782a0856e (patch) | |
tree | 56447bd4f713b1410a8574a9bda7ed1e622080f4 /usr.bin/xargs | |
parent | 4e4e5cd87be2aa1eed80d99eb6f8b865742d4bfb (diff) | |
download | FreeBSD-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.1 | 16 | ||||
-rw-r--r-- | usr.bin/xargs/xargs.c | 70 |
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 */ -} |