X-Git-Url: https://git.subgeniuskitty.com/unix-history/.git/blobdiff_plain/182ca07d31fb37a3640061ecec5c94d6a4c1d4dd..2c5d7f0d9c585d802fda462dedefa62250eeb73d:/usr/src/usr.bin/make/dir.c diff --git a/usr/src/usr.bin/make/dir.c b/usr/src/usr.bin/make/dir.c index 7011b3d81e..be200cba2b 100644 --- a/usr/src/usr.bin/make/dir.c +++ b/usr/src/usr.bin/make/dir.c @@ -7,21 +7,37 @@ * This code is derived from software contributed to Berkeley by * Adam de Boor. * - * Redistribution and use in source and binary forms are permitted - * provided that the above copyright notice and this paragraph are - * duplicated in all such forms and that any documentation, - * advertising materials, and other materials related to such - * distribution and use acknowledge that the software was developed - * by the University of California, Berkeley. The name of the - * University may not 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[] = "@(#)dir.c 5.3 (Berkeley) %G%"; +static char sccsid[] = "@(#)dir.c 5.6 (Berkeley) 12/28/90"; #endif /* not lint */ /*- @@ -192,7 +208,7 @@ Dir_Init () { dirSearchPath = Lst_Init (FALSE); openDirectories = Lst_Init (FALSE); - Hash_InitTable(&mtimes, 0, HASH_STRING_KEYS); + Hash_InitTable(&mtimes, 0); /* * Since the Path structure is placed on both openDirectories and @@ -302,13 +318,13 @@ DirMatchFiles (pattern, p, expansions) * begins with a dot (note also that as a side effect of the hashing * scheme, .* won't match . or .. since they aren't hashed). */ - if (Str_Match(entry->key.name, pattern) && - ((entry->key.name[0] != '.') || + if (Str_Match(entry->name, pattern) && + ((entry->name[0] != '.') || (pattern[0] == '.'))) { (void)Lst_AtEnd(expansions, - (isDot ? strdup(entry->key.name) : - Str_Concat(p->name, entry->key.name, + (isDot ? strdup(entry->name) : + str_concat(p->name, entry->name, STR_ADDSLASH))); } } @@ -388,7 +404,7 @@ DirExpandCurly(word, brace, path, expansions) /* * Allocate room for the combination and install the three pieces. */ - file = malloc(otherLen + cp - start + 1); + file = emalloc(otherLen + cp - start + 1); if (brace != word) { strncpy(file, word, brace-word); } @@ -647,7 +663,7 @@ Dir_FindFile (name, path) * (fish.c) and what pmake finds (./fish.c). */ if ((!hasSlash || (cp - name == 2 && *name == '.')) && - (Hash_FindEntry (&dot->files, (Address)cp) != (Hash_Entry *)NULL)) { + (Hash_FindEntry (&dot->files, cp) != (Hash_Entry *)NULL)) { if (DEBUG(DIR)) { printf("in '.'\n"); } @@ -677,7 +693,7 @@ Dir_FindFile (name, path) if (DEBUG(DIR)) { printf("%s...", p->name); } - if (Hash_FindEntry (&p->files, (Address)cp) != (Hash_Entry *)NULL) { + if (Hash_FindEntry (&p->files, cp) != (Hash_Entry *)NULL) { if (DEBUG(DIR)) { printf("here..."); } @@ -702,7 +718,7 @@ Dir_FindFile (name, path) continue; } } - file = Str_Concat (p->name, cp, STR_ADDSLASH); + file = str_concat (p->name, cp, STR_ADDSLASH); if (DEBUG(DIR)) { printf("returning %s\n", file); } @@ -759,7 +775,7 @@ Dir_FindFile (name, path) while ((ln = Lst_Next (path)) != NILLNODE) { p = (Path *) Lst_Datum (ln); if (p != dot) { - file = Str_Concat (p->name, name, STR_ADDSLASH); + file = str_concat (p->name, name, STR_ADDSLASH); } else { /* * Checking in dot -- DON'T put a leading ./ on the thing. @@ -859,7 +875,7 @@ Dir_FindFile (name, path) p = (Path *) Lst_Datum (ln); } - if (Hash_FindEntry (&p->files, (Address)cp) != (Hash_Entry *)NULL) { + if (Hash_FindEntry (&p->files, cp) != (Hash_Entry *)NULL) { return (strdup (name)); } else { return ((char *) NULL); @@ -999,11 +1015,11 @@ Dir_AddDir (path, name) } if ((d = opendir (name)) != (DIR *) NULL) { - p = (Path *) malloc (sizeof (Path)); + p = (Path *) emalloc (sizeof (Path)); p->name = strdup (name); p->hits = 0; p->refCount = 1; - Hash_InitTable (&p->files, -1, HASH_STRING_KEYS); + Hash_InitTable (&p->files, -1); /* * Skip the first two entries -- these will *always* be . and .. @@ -1089,8 +1105,8 @@ Dir_MakeFlags (flag, path) if (Lst_Open (path) == SUCCESS) { while ((ln = Lst_Next (path)) != NILLNODE) { p = (Path *) Lst_Datum (ln); - tstr = Str_Concat (flag, p->name, 0); - str = Str_Concat (str, tstr, STR_ADDSPACE | STR_DOFREE); + tstr = str_concat (flag, p->name, 0); + str = str_concat (str, tstr, STR_ADDSPACE | STR_DOFREE); } Lst_Close (path); }