From b695b4bd2408c4ad06a1dcdd95b2a95a3bf63fa5 Mon Sep 17 00:00:00 2001 From: Guillaume Cottenceau Date: Thu, 9 Nov 2000 23:09:17 +0000 Subject: add `mar' archiving program --- mdk-stage1/mar/mar.h | 71 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 mdk-stage1/mar/mar.h (limited to 'mdk-stage1/mar/mar.h') diff --git a/mdk-stage1/mar/mar.h b/mdk-stage1/mar/mar.h new file mode 100644 index 000000000..5d8d98f61 --- /dev/null +++ b/mdk-stage1/mar/mar.h @@ -0,0 +1,71 @@ +/* + * Guillaume Cottenceau (gc@mandrakesoft.com) + * + * Copyright 2000 MandrakeSoft + * + * This software may be freely redistributed under the terms of the GNU + * public license. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * + */ + +/* + * mar - The Mandrake Archiver + * + * An archiver that supports compression (through zlib). + * + * Designed to be small so these bad designs are inside: + * . archive and compression are mixed together + * . create the mar file in-memory + * . does not free memory + * + */ + +#ifndef MAR_H +#define MAR_H + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/* + * Format of a mar file: + * + * int crc32 \ + * ASCIIZ filename \ | + * int file_length | repeated | gzipped + * int pointer_in_archive / | + * char 0 | + * raw_files_data / + * + */ + +typedef struct mar_element_s +{ + char * filename; /* filename (ASCIIZ) of the element */ + int file_length; /* length (in bytes) of the raw data of the element */ + int data_offset; /* seek start of the raw data in the underlying mar stream */ + struct mar_element_s * next_element; /* pointer to the next element in the mar stream; NULL if last */ +} mar_element; + +typedef struct mar_stream_s +{ + int crc32; /* crc32 of the mar stream; it is the addition of all the 8-bit char's from the stream */ + mar_element * first_element; /* pointer to the first element inside the mar stream */ + gzFile mar_gzfile; /* associated gzFile (opened) */ +} mar_stream; + +int gz_errnum; + +#define DEBUG_MAR(x) + +#endif -- cgit v1.2.1