hush/include/unarchive.h
2002-08-22 13:25:12 +00:00

49 lines
1.3 KiB
C

#include <stdio.h> /* for FILE */
#include <unistd.h> /* for off_t */
enum extract_functions_e {
extract_verbose_list = 1,
extract_list = 2,
extract_one_to_buffer = 4,
extract_to_stdout = 8,
extract_all_to_fs = 16,
extract_preserve_date = 32,
extract_data_tar_gz = 64,
extract_control_tar_gz = 128,
extract_unzip_only = 256,
extract_unconditional = 512,
extract_create_leading_dirs = 1024,
extract_quiet = 2048,
extract_exclude_list = 4096
};
typedef struct file_headers_s {
char *name;
char *link_name;
off_t size;
uid_t uid;
gid_t gid;
mode_t mode;
time_t mtime;
dev_t device;
int (*extract_func) (FILE *, FILE *);
} file_header_t;
file_header_t *get_header_ar(FILE * in_file);
file_header_t *get_header_cpio(FILE * src_stream);
file_header_t *get_header_tar(FILE * tar_stream);
file_header_t *get_header_zip(FILE * zip_stream);
void seek_sub_file(FILE * src_stream, const int count);
extern off_t archive_offset;
char *unarchive(FILE * src_stream, FILE * out_stream,
file_header_t * (*get_headers) (FILE *),
const int extract_function, const char *prefix,
char **include_name, char **exclude_name);
char *deb_extract(const char *package_filename, FILE * out_stream,
const int extract_function, const char *prefix,
const char *filename);