X-Git-Url: https://git.subgeniuskitty.com/unix-history/.git/blobdiff_plain/1c15e88899094343f75aeba04122cd96a96b428e..af359dea2e5ab3e937b62107ecd6a51d78189ed7:/usr/src/usr.bin/find/misc.c diff --git a/usr/src/usr.bin/find/misc.c b/usr/src/usr.bin/find/misc.c index 50794f0805..3ff4d5a438 100644 --- a/usr/src/usr.bin/find/misc.c +++ b/usr/src/usr.bin/find/misc.c @@ -5,51 +5,65 @@ * This code is derived from software contributed to Berkeley by * Cimarron D. Taylor of the University of California, Berkeley. * - * Redistribution and use in source and binary forms are permitted provided - * that: (1) source distributions retain this entire copyright notice and - * comment, and (2) distributions including binaries display the following - * acknowledgement: ``This product includes software developed by the - * University of California, Berkeley and its contributors'' in the - * documentation or other materials provided with the distribution and in - * all advertising materials mentioning features or use of this software. - * Neither the name of the University nor the names of its contributors may - * be used to endorse or promote products derived from this software without - * specific prior written permission. - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by the University of + * California, Berkeley and its contributors. + * 4. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. */ #ifndef lint -static char sccsid[] = "@(#)misc.c 5.2 (Berkeley) 5/12/90"; +static char sccsid[] = "@(#)misc.c 5.8 (Berkeley) 5/24/91"; #endif /* not lint */ #include #include +#include #include +#include +#include #include "find.h" /* - * find_subst -- + * brace_subst -- * Replace occurrences of {} in s1 with s2 and return the result string. */ -find_subst(orig, store, path, len) +void +brace_subst(orig, store, path, len) char *orig, **store, *path; int len; { register int plen; register char ch, *p; - char *realloc(), *strerror(); plen = strlen(path); for (p = *store; ch = *orig; ++orig) if (ch == '{' && orig[1] == '}') { while ((p - *store) + plen > len) - if (!(*store = realloc(*store, len *= 2))) { - (void)fprintf(stderr, - "find: %s.\n", strerror(errno)); - exit(1); - } + if (!(*store = realloc(*store, len *= 2))) + err("%s", strerror(errno)); bcopy(path, p, plen); p += plen; ++orig; @@ -59,60 +73,80 @@ find_subst(orig, store, path, len) } /* - * find_queryuser -- + * queryuser -- * print a message to standard error and then read input from standard * input. If the input is 'y' then 1 is returned. */ -find_queryuser(argv) +queryuser(argv) register char **argv; { - char buf[10]; + int ch, first, nl; (void)fprintf(stderr, "\"%s", *argv); while (*++argv) (void)fprintf(stderr, " %s", *argv); (void)fprintf(stderr, "\"? "); (void)fflush(stderr); - return(!fgets(buf, sizeof(buf), stdin) || buf[0] != 'y' ? 0 : 1); -} - -/* - * bad_arg -- - * print out a bad argument message. - */ -void -bad_arg(option, error) - char *option, *error; -{ - (void)fprintf(stderr, "find: %s: %s.\n", option, error); - exit(1); + + first = ch = getchar(); + for (nl = 0;;) { + if (ch == '\n') { + nl = 1; + break; + } + if (ch == EOF) + break; + ch = getchar(); + } + + if (!nl) { + (void)fprintf(stderr, "\n"); + (void)fflush(stderr); + } + return(first == 'y'); } /* * emalloc -- * malloc with error checking. */ -char * +void * emalloc(len) u_int len; { - char *p, *malloc(), *strerror(); + void *p; - if (!(p = malloc(len))) { - (void)fprintf(stderr, "find: %s.\n", strerror(errno)); - exit(1); - } - return(p); + if (p = malloc(len)) + return(p); + err("%s", strerror(errno)); + /* NOTREACHED */ } -usage() -{ - extern int deprecated; +#if __STDC__ +#include +#else +#include +#endif - if (deprecated) - (void)fprintf(stderr, "usage: find path-list expression\n"); - else - (void)fprintf(stderr, - "usage: find [-dsx] -f path ... expression\n"); +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, "find: "); + (void)vfprintf(stderr, fmt, ap); + va_end(ap); + (void)fprintf(stderr, "\n"); exit(1); + /* NOTREACHED */ }