X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=common-src%2Ffileheader.h;h=936b7c8c6e6d8a2983816c836f934e8779987cd7;hb=e7c9810a75f51ad43cc8e18f92099d7f717d6da7;hp=ea7bda5eeca33de70c3de12f08b06695922e7cce;hpb=ac973066bc508cb82728e46eaf499e9424d4e0f1;p=debian%2Famanda diff --git a/common-src/fileheader.h b/common-src/fileheader.h index ea7bda5..936b7c8 100644 --- a/common-src/fileheader.h +++ b/common-src/fileheader.h @@ -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 @@ -31,15 +32,16 @@ #ifndef FILEHEADER_H #define FILEHEADER_H -#include "amanda.h" -#include "util.h" /* for bstrncmp() */ +#include +#include #define STRMAX 256 typedef char string_t[STRMAX]; typedef enum { - F_UNKNOWN, F_WEIRD, F_TAPESTART, F_TAPEEND, - F_DUMPFILE, F_CONT_DUMPFILE, F_SPLIT_DUMPFILE, F_EMPTY + 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,31 +55,58 @@ 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 */ +/* 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 build_header(char *buffer, const 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); + #endif /* !FILEHEADER_H */