Lst_AtEnd(openDirectories, p);
Lst_AtEnd(&openDirectories, p);
Dir_AddDir (path, name)    Lst           path;	      /* the path to which the directory should be			       * added */    char          *name;      /* the name of the directory to add */{    LstNode       ln;	      /* node in case Path structure is found */    register Path *p;	      /* pointer to new Path structure */    DIR     	  *d;	      /* for reading directory */    register struct dirent *dp; /* entry in directory */    ln = Lst_Find(openDirectories, DirFindName, name);    if (ln != NULL) {	p = (Path *)Lst_Datum (ln);	if (Lst_Member(path, p) == NULL) {	    p->refCount += 1;	    Lst_AtEnd(path, p);	}    } else {	if (DEBUG(DIR)) {	    printf("Caching %s...", name);	    fflush(stdout);	}	if ((d = opendir (name)) != (DIR *) NULL) {	    p = (Path *) emalloc (sizeof (Path));	    p->name = estrdup (name);	    p->hits = 0;	    p->refCount = 1;	    Hash_InitTable (&p->files, -1);	    /*	     * Skip the first two entries -- these will *always* be . and ..	     */	    (void)readdir(d);	    (void)readdir(d);	    while ((dp = readdir (d)) != (struct dirent *) NULL) {#if defined(sun) && defined(d_ino) /* d_ino is a sunos4 #define for d_fileno */		/*		 * The sun directory library doesn't check for a 0 inode		 * (0-inode slots just take up space), so we have to do		 * it ourselves.		 */		if (dp->d_fileno == 0) {		    continue;		}#endif /* sun && d_ino */		(void)Hash_CreateEntry(&p->files, dp->d_name, (Boolean *)NULL);	    }	    (void) closedir (d);	    Lst_AtEnd(openDirectories, p);	    Lst_AtEnd(path, p);	}	if (DEBUG(DIR)) {	    printf("done\n");	}    }}