* Copyright (c) 1990 The Regents of the University of California.
* This code is derived from software contributed to Berkeley by
* Cimarron D. Taylor of the University of California, Berkeley.
* %sccs.include.redist.c%
static char sccsid
[] = "@(#)misc.c 5.1 (Berkeley) %G%";
* remove the path strings from the command line and returns them in
* another array. The find syntax assumes all command arguments up
* to the first one beginning with a '-', '(' or '!' are pathnames.
* find first '-', '(' or '!' to delimit paths; if no paths, it's
* an error. Shift the array back one at the same time, creating
* a separate array of pathnames.
for (argv
= *argvp
+ 1;; ++argv
) {
if (!*argv
|| **argv
== '-' || **argv
== '!' || **argv
== '(')
start
= *argvp
; /* save beginning of path array */
*argvp
= argv
; /* move argv value */
return(start
); /* return path array */
* Replace occurrences of {} in s1 with s2 and return the result string.
* Find_subst always returns a newly allocated string which should be
find_subst(orig
, store
, path
, len
)
char *orig
, **store
, *path
;
for (p
= *store
; ch
= *orig
; ++orig
)
if (ch
== '{' && orig
[1] == '}') {
while ((p
- *store
) + plen
> len
)
if (!(*store
= realloc(*store
, len
*= 2))) {
"find: %s.\n", strerror(errno
));
* print a message to standard error and then read input from standard
* input. If the input is 'y' then 1 is returned.
(void)fprintf(stderr
, "\"%s", *argv
);
(void)fprintf(stderr
, " %s", *argv
);
(void)fprintf(stderr
, "\"? ");
return(!fgets(buf
, sizeof(buf
), stdin
) || buf
[0] != 'y' ? 0 : 1);
* print out a bad argument message.
(void)fprintf(stderr
, "find: %s: %s.\n", option
, error
);
* malloc with error checking.
if (!(p
= malloc(len
))) {
(void)fprintf(stderr
, "find: %s.\n", strerror(errno
));
(void)fprintf(stderr
, "usage: find path-list expression\n");