filenode
const filenode *fna = *((const filenode * const *)a);
const filenode *fnb = *((const filenode * const *)b);
filenode *fnode;
filenode **seqlist, **psl;
seqlist = emalloc(sizeof(filenode *) * (file_count + 1));
bzero(seqlist, sizeof(filenode *) * (file_count + 1));
qsort(seqlist, file_count, sizeof(filenode *), sequence_cmp);
filenode *node;
filenode *next, *last;
static filenode fn_head_s, *fn_head, **fn_seqlist;
static void do_file(filenode *fnode, strnodelist *);
static void strnode_add(strnodelist **, char *, filenode *);
static int skip_ok(filenode *fnode);
static int keep_ok(filenode *fnode);
static char *generate_loop_for_req(strnodelist *, provnode *, filenode *);
static void satisfy_req(f_reqnode *rnode, filenode *fnode, strnodelist *);
static void parse_require(filenode *, char *);
static void parse_provide(filenode *, char *);
static void parse_before(filenode *, char *);
static void parse_keywords(filenode *, char *);
static filenode *filenode_new(char *);
static void add_require(filenode *, char *);
static void add_provide(filenode *, char *);
static void add_before(filenode *, char *);
static void add_keyword(filenode *, char *);
static Hash_Entry *make_fake_provision(filenode *);
static void generate_graphviz_file_links(Hash_Entry *, filenode *);
strnode_add(strnodelist **listp, char *s, filenode *fnode)
static filenode *
filenode *temp;
add_require(filenode *fnode, char *s)
add_provide(filenode *fnode, char *s)
add_before(filenode *fnode, char *s)
add_keyword(filenode *fnode, char *s)
parse_require(filenode *node, char *buffer)
parse_provide(filenode *node, char *buffer)
parse_before(filenode *node, char *buffer)
parse_keywords(filenode *node, char *buffer)
filenode *node;
make_fake_provision(filenode *node)
generate_graphviz_file_links(Hash_Entry *entry, filenode *fnode)
filenode *fnode)
satisfy_req(f_reqnode *rnode, filenode *fnode, strnodelist *stack_ptr)
skip_ok(filenode *fnode)
keep_ok(filenode *fnode)
do_file(filenode *fnode, strnodelist *stack_ptr)
typedef struct filenode filenode;