-extern void enlist(struct list *h, const char *s);
-extern void enlist_unique(struct list *header, const char *str, int n);
-extern void enlist_unique_header(struct list *header, const char *name, const char *value);
-extern void enlist_first(struct list *header, const char *str);
+/*
+ * struct list
+ *
+ * A linked list class.
+ */
+
+extern void init_list (struct list *the_list);
+extern void destroy_list (struct list *the_list);
+
+extern jb_err enlist (struct list *the_list, const char *str);
+extern jb_err enlist_unique (struct list *the_list, const char *str, int num_significant_chars);
+extern jb_err enlist_unique_header (struct list *the_list, const char *name, const char *value);
+extern jb_err enlist_first (struct list *the_list, const char *str);
+extern jb_err list_append_list_unique(struct list *dest, const struct list *src);
+extern jb_err list_duplicate (struct list *dest, const struct list *src);
+
+extern int list_remove_item(struct list *the_list, const char *str);
+extern int list_remove_list(struct list *dest, const struct list *src);
+extern void list_remove_all (struct list *the_list);
+
+extern int list_is_empty(const struct list *the_list);
+
+extern char * list_to_text(const struct list *the_list);