DirNode
static DirNode *ef_open_dir(ExpandFile *ef, const char *pathname);
static DirNode *ef_close_dir(ExpandFile *ef, DirNode *node);
ef->cache.mem = _new_FreeList(sizeof(DirNode), DIR_CACHE_BLK);
DirNode *dnode;
DirNode *dnode; /* A directory-reader cache node */
DirNode *subdnode = ef_open_dir(ef, ef->path->name);
typedef struct DirNode DirNode;
DirNode *next; /* The next directory in the list */
DirNode *prev; /* The node that precedes this node in the list */
static DirNode *ef_open_dir(ExpandFile *ef, const char *pathname)
DirNode *node; /* The cache node used */
node = (DirNode *) _new_FreeListNode(cache->mem);
node = (DirNode *) _del_FreeListNode(cache->mem, node);
DirNode *head; /* The head of the list of used and unused cache nodes */
DirNode *next; /* The next unused node between head and tail */
DirNode *tail; /* The tail of the list of unused cache nodes */
static DirNode *ef_close_dir(ExpandFile *ef, DirNode *node)