1 /* ------------------------------------------------------------------------ */
2 /* LHa for UNIX Archiver Driver */
4 /* Modified Nobutaka Watazaki */
6 /* Ver. 1.14 Soruce All chagned 1995.01.14 N.Watazaki */
7 /* ------------------------------------------------------------------------ */
10 lharc.h interface.h slidehuf.h
15 #include <sys/types.h>
21 #include "lha_macro.h"
23 struct encode_option {
24 #if defined(__STDC__) || defined(AIX)
26 void (*encode_start) ();
27 void (*encode_end) ();
30 int (*encode_start) ();
35 struct decode_option {
36 unsigned short (*decode_c) ();
37 unsigned short (*decode_p) ();
38 #if defined(__STDC__) || defined(AIX)
39 void (*decode_start) ();
41 int (*decode_start) ();
45 /* ------------------------------------------------------------------------ */
46 /* LHa File Type Definition */
47 /* ------------------------------------------------------------------------ */
55 typedef struct LzHeader {
56 unsigned char header_size;
57 char method[METHOD_TYPE_STRAGE];
60 long last_modified_stamp;
61 unsigned char attribute;
62 unsigned char header_level;
66 unsigned char extend_type;
67 unsigned char minor_version;
69 /* extend_type == EXTEND_UNIX and convert from other type. */
70 time_t unix_last_modified_stamp;
71 unsigned short unix_mode;
72 unsigned short unix_uid;
73 unsigned short unix_gid;
79 unsigned long original;
86 /* ------------------------------------------------------------------------ */
87 /* Option switch variable */
88 /* ------------------------------------------------------------------------ */
89 /* command line options (common options) */
91 EXTERN boolean text_mode;
92 EXTERN boolean verbose;
93 EXTERN boolean noexec; /* debugging option */
96 EXTERN boolean delete_after_append;
97 EXTERN int compress_method;
98 EXTERN int header_level;
99 /* EXTERN int quiet_mode; */ /* 1996.8.13 t.okamoto */
101 EXTERN boolean euc_mode;
104 /* list command flags */
105 EXTERN boolean verbose_listing;
107 /* extract/print command flags */
108 EXTERN boolean output_to_stdout;
110 /* add/update/delete command flags */
111 EXTERN boolean new_archive;
112 EXTERN boolean update_if_newer;
113 EXTERN boolean generic_format;
115 EXTERN boolean remove_temporary_at_error;
116 EXTERN boolean recover_archive_when_interrupt;
117 EXTERN boolean remove_extracting_file_when_interrupt;
118 EXTERN boolean get_filename_from_stdin;
119 EXTERN boolean ignore_directory;
120 EXTERN boolean verify_mode;
123 EXTERN int quiet_mode;
125 /* ------------------------------------------------------------------------ */
126 /* Globale Variable */
127 /* ------------------------------------------------------------------------ */
128 EXTERN char **cmd_filev;
129 EXTERN int cmd_filec;
131 EXTERN char *archive_name;
132 EXTERN char expanded_archive_name[FILENAME_LENGTH];
133 EXTERN char temporary_name[FILENAME_LENGTH];
134 EXTERN char backup_archive_name[FILENAME_LENGTH];
136 EXTERN char *reading_filename, *writting_filename;
138 /* 1996.8.13 t.okamoto */
140 EXTERN boolean remove_temporary_at_error;
141 EXTERN boolean recover_archive_when_interrupt;
142 EXTERN boolean remove_extracting_file_when_interrupt;
145 EXTERN int archive_file_mode;
146 EXTERN int archive_file_gid;
148 EXTERN struct interfacing interface;
150 /* EXTERN unsigned short crc; */ /* 1996.8.13 t.okamoto */
153 EXTERN int unpackable;
154 EXTERN unsigned long origsize, compsize;
155 EXTERN unsigned short dicbit;
156 EXTERN unsigned short maxmatch;
157 EXTERN unsigned long count;
158 EXTERN unsigned long loc; /* short -> long .. Changed N.Watazaki */
159 EXTERN unsigned char *text;
160 EXTERN int prev_char;
163 #ifndef LHA_MAIN_SRC /* t.okamoto 96/2/20 */
164 EXTERN unsigned short left[], right[];
165 EXTERN unsigned char c_len[], pt_len[];
166 EXTERN unsigned short c_freq[], c_table[], c_code[];
167 EXTERN unsigned short p_freq[], pt_table[], pt_code[], t_freq[];
171 #ifdef NEED_INCREMENTAL_INDICATOR
172 EXTERN long indicator_count;
173 EXTERN long indicator_threshold;
177 EXTERN FILE *infile, *outfile;
178 EXTERN unsigned short crc, bitbuf;
180 EXTERN long reading_size;
183 EXTERN unsigned int n_max;
186 EXTERN FILE *temporary_fp;
188 /* ------------------------------------------------------------------------ */
190 /* ------------------------------------------------------------------------ */
192 extern int patmatch();
194 extern void interrupt();
196 extern void message();
197 extern void warning();
199 extern void fatal_error();
201 extern boolean need_file();
202 extern int inquire();
203 extern FILE *xfopen();
205 extern boolean find_files();
206 extern void free_files();
208 extern void init_sp();
209 extern void add_sp();
210 extern void finish_sp();
211 extern void free_sp();
212 extern void cleaning_files();
214 extern void build_temporary_name();
215 extern void build_backup_file_name();
216 extern void build_standard_archive_name();
218 extern FILE *open_old_archive();
219 extern void init_header();
220 extern boolean get_header();
221 extern boolean archive_is_msdos_sfx1();
222 extern boolean skip_msdos_sfx1_code();
223 extern void write_header();
224 extern void write_archive_tail();
225 extern void copy_old_one();
226 extern unsigned char *convdelim();
227 extern long copyfile();
229 extern void cmd_list(), cmd_extract(), cmd_add(), cmd_delete();
231 extern boolean ignore_directory;
232 extern boolean compress_method;
233 extern boolean verify_mode;
235 extern char *extract_directory;
239 extern int encode_alloc();
240 extern void encode();
241 extern void decode();
244 extern void start_indicator();
245 extern void finish_indicator();
246 extern void finish_indicator2();
249 extern void output_st1();
250 extern unsigned char *alloc_buf();
251 extern void encode_start_st1();
252 extern void encode_end_st1();
253 extern unsigned short decode_c_st1();
254 extern unsigned short decode_p_st1();
255 extern void decode_start_st1();
258 extern void decode_start_st0();
259 extern void encode_p_st0( /* unsigned short j */ );
260 extern void encode_start_fix();
261 extern void decode_start_fix();
262 extern unsigned short decode_c_st0();
263 extern unsigned short decode_p_st0();
266 extern void start_c_dyn();
267 extern void decode_start_dyn();
268 extern unsigned short decode_c_dyn();
269 extern unsigned short decode_p_dyn();
270 extern void output_dyn( /* int code, unsigned int pos */ );
271 extern void encode_end_dyn();
273 extern int decode_lzhuf();
277 extern unsigned short decode_c_lzs();
278 extern unsigned short decode_p_lzs();
279 extern unsigned short decode_c_lz5();
280 extern unsigned short decode_p_lz5();
281 extern void decode_start_lzs();
282 extern void decode_start_lz5();
284 extern void make_table( /* int nchar, uchar bitlen[], int tablebits,
287 /* from maketree.c */
289 * void make_code(short n, uchar len[], ushort code[]); short make_tree(short
290 * nparm, ushort freqparm[], uchar lenparm[], ushort codeparam[]);
292 extern void make_code( /* int n, uchar len[], ushort code[] */ );
293 extern short make_tree( /* int nparm, ushort freqparm[], uchar lenparm[],
294 ushort codeparam[] */ );
297 extern void make_crctable();
298 extern unsigned short calccrc( /* uchar *p, uint n */ );
299 extern void fillbuf( /* uchar n */ );
300 extern unsigned short getbits( /* uchar n */ );
301 extern void putcode( /* uchar n, ushort x */ );
302 extern void putbits( /* uchar n, ushort x */ );
303 extern int fread_crc( /* uchar *p, int n, FILE *f */ );
304 extern void fwrite_crc( /* uchar *p, int n, FILE *f */ );
305 extern void init_getbits();
306 extern void init_putbits();
307 extern void make_crctable();
308 extern unsigned short calccrc();
311 extern int encode_lzhuf();
312 extern int encode_stored_crc();