lintian doesn't like orphan packages with uploaders...
[debian/amanda] / common-src / fileheader.h
index f54fae5451e8bb5f5623771d0fb131bc6a8ac9e9..936b7c8c6e6d8a2983816c836f934e8779987cd7 100644 (file)
@@ -1,6 +1,7 @@
 /*
  * Amanda, The Advanced Maryland Automatic Network Disk Archiver
  * Copyright (c) 1991-1999 University of Maryland at College Park
+ * Copyright (c) 2007-2012 Zmanda, Inc.  All Rights Reserved.
  * All Rights Reserved.
  *
  * Permission to use, copy, modify, distribute, and sell this software and its
@@ -38,8 +39,9 @@
 
 typedef char string_t[STRMAX];
 typedef enum {
-    F_UNKNOWN = 0, F_WEIRD = -1, F_TAPESTART = 1, F_TAPEEND = 2, 
-    F_DUMPFILE = 3, F_CONT_DUMPFILE = 4, F_SPLIT_DUMPFILE = 5, F_EMPTY = -2
+    F_UNKNOWN = 0, F_WEIRD = -1, F_TAPESTART = 1, F_TAPEEND = 2,
+    F_DUMPFILE = 3, F_CONT_DUMPFILE = 4, F_SPLIT_DUMPFILE = 5, F_NOOP = 6,
+    F_EMPTY = -2
 } filetype_t;
 
 typedef struct file_s {
@@ -53,22 +55,23 @@ typedef struct file_s {
     string_t name;     /* hostname or label */
     string_t disk;
     string_t program;
-    string_t dumper;
+    string_t application;
     string_t srvcompprog;
     string_t clntcompprog;
     string_t srv_encrypt;
     string_t clnt_encrypt;
     string_t recover_cmd;
     string_t uncompress_cmd;
-    string_t encrypt_cmd;
     string_t decrypt_cmd;
     string_t srv_decrypt_opt;
     string_t clnt_decrypt_opt;
     string_t cont_filename;
+    char     *dle_str;
     int is_partial;
     int partnum;
     int totalparts; /* -1 == UNKNOWN */
     size_t blocksize;
+    off_t  orig_size;
 } dumpfile_t;
 
 /* local functions */
@@ -76,13 +79,20 @@ typedef struct file_s {
 /* Makes a serialized header from the dumpfile_t representation. The
  * return value is allocated using malloc(), so you must free it.
  *
- * Build_header guarantees that the buffer returned is exactly
- * 'size' bytes, with any extra bytes zeroed out. */
-char *  build_header        (const dumpfile_t *file, size_t size);
+ * 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);
 
@@ -91,5 +101,12 @@ 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);
 
 #endif /* !FILEHEADER_H */