-void fh_init P((dumpfile_t *file));
-void parse_file_header P((char *buffer, dumpfile_t *file, size_t buflen));
-void build_header P((char *buffer,
- dumpfile_t *file,
- size_t buflen));
-void print_header P((FILE *outf, dumpfile_t *file));
-int known_compress_type P((dumpfile_t *file));
+/* Makes a serialized header from the dumpfile_t representation. The
+ * return value is allocated using malloc(), so you must free it.
+ *
+ * Build_header returns NULL if the resulting header would be larger
+ * than max_size bytes. If size is not NULL, then the resulting header
+ * will be *at least* this many bytes. If size is NULL, then the
+ * header will be exactly max_size bytes. Zero bytes are used to pad the
+ * header to the required length.
+ *
+ * If size is not NULL, *size is set to the actual size of the generated header.
+ */
+char * build_header (const dumpfile_t *file, size_t *size, size_t max_size);
+
+void fh_init(dumpfile_t *file);
+void parse_file_header(const char *buffer, dumpfile_t *file, size_t buflen);
+void print_header(FILE *outf, const dumpfile_t *file);
+char *summarize_header(const dumpfile_t *file);
+int known_compress_type(const dumpfile_t *file);
+void dump_dumpfile_t(const dumpfile_t *file);
+
+/* Returns TRUE if the two headers are equal, FALSE otherwise. */
+gboolean headers_are_equal(dumpfile_t * a, dumpfile_t * b);
+
+/* Returns an allocated duplicate header. */
+dumpfile_t * dumpfile_copy(dumpfile_t* from);
+void dumpfile_copy_in_place(dumpfile_t *dest, dumpfile_t* source);
+
+/* Frees associated storage */
+void dumpfile_free_data(dumpfile_t* info);
+
+/* Frees the header and associated storage */
+void dumpfile_free(dumpfile_t* info);