BSD 4_3_Net_2 release
[unix-history] / usr / src / usr.bin / make / dir.c
index 3887345..be200cb 100644 (file)
@@ -7,23 +7,37 @@
  * This code is derived from software contributed to Berkeley by
  * Adam de Boor.
  *
  * 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: (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
  */
 
 #ifndef lint
-static char sccsid[] = "@(#)dir.c      5.5 (Berkeley) 6/1/90";
+static char sccsid[] = "@(#)dir.c      5.6 (Berkeley) 12/28/90";
 #endif /* not lint */
 
 /*-
 #endif /* not lint */
 
 /*-
@@ -194,7 +208,7 @@ Dir_Init ()
 {
     dirSearchPath = Lst_Init (FALSE);
     openDirectories = Lst_Init (FALSE);
 {
     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
     
     /*
      * Since the Path structure is placed on both openDirectories and
@@ -304,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).
         */
         * 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,
             (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)));
        }
     }
                                        STR_ADDSLASH)));
        }
     }
@@ -649,7 +663,7 @@ Dir_FindFile (name, path)
      * (fish.c) and what pmake finds (./fish.c).
      */
     if ((!hasSlash || (cp - name == 2 && *name == '.')) &&
      * (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");
            }
            if (DEBUG(DIR)) {
                printf("in '.'\n");
            }
@@ -679,7 +693,7 @@ Dir_FindFile (name, path)
        if (DEBUG(DIR)) {
            printf("%s...", p->name);
        }
        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...");
            }
            if (DEBUG(DIR)) {
                printf("here...");
            }
@@ -861,7 +875,7 @@ Dir_FindFile (name, path)
        p = (Path *) Lst_Datum (ln);
     }
     
        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);
        return (strdup (name));
     } else {
        return ((char *) NULL);
@@ -1005,7 +1019,7 @@ Dir_AddDir (path, name)
            p->name = strdup (name);
            p->hits = 0;
            p->refCount = 1;
            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 ..
            
            /*
             * Skip the first two entries -- these will *always* be . and ..