1 /* ------------------------------------------------------------------------ */
2 /* LHa for UNIX Archiver Driver */
4 /* Modified Nobutaka Watazaki */
6 /* Ver. 1.14 Soruce All chagned 1995.01.14 N.Watazaki */
7 /* Ver. 1.14i Modified and bug fixed 2000.10.06 t.okamoto */
8 /* ------------------------------------------------------------------------ */
11 lharc.h interface.h slidehuf.h
21 #include <sys/types.h>
27 #include "lha_macro.h"
29 struct encode_option {
30 #if defined(__STDC__) || defined(AIX)
32 void (*encode_start) ();
33 void (*encode_end) ();
36 int (*encode_start) ();
41 struct decode_option {
42 unsigned short (*decode_c) ();
43 unsigned short (*decode_p) ();
44 #if defined(__STDC__) || defined(AIX)
45 void (*decode_start) ();
47 int (*decode_start) ();
51 /* ------------------------------------------------------------------------ */
52 /* LHa File Type Definition */
53 /* ------------------------------------------------------------------------ */
61 typedef struct LzHeader {
62 unsigned char header_size;
63 char method[METHOD_TYPE_STRAGE];
66 long last_modified_stamp;
67 unsigned char attribute;
68 unsigned char header_level;
72 unsigned char extend_type;
73 unsigned char minor_version;
75 /* extend_type == EXTEND_UNIX and convert from other type. */
76 time_t unix_last_modified_stamp;
77 unsigned short unix_mode;
78 unsigned short unix_uid;
79 unsigned short unix_gid;
85 unsigned long original;
92 /* ------------------------------------------------------------------------ */
93 /* Option switch variable */
94 /* ------------------------------------------------------------------------ */
95 /* command line options (common options) */
97 EXTERN boolean text_mode;
98 EXTERN boolean verbose;
99 EXTERN boolean noexec; /* debugging option */
100 EXTERN boolean force;
102 EXTERN boolean delete_after_append;
103 EXTERN int compress_method;
104 EXTERN int header_level;
105 /* EXTERN int quiet_mode; */ /* 1996.8.13 t.okamoto */
107 EXTERN boolean euc_mode;
110 /* list command flags */
111 EXTERN boolean verbose_listing;
113 /* extract/print command flags */
114 EXTERN boolean output_to_stdout;
116 /* add/update/delete command flags */
117 EXTERN boolean new_archive;
118 EXTERN boolean update_if_newer;
119 EXTERN boolean generic_format;
121 EXTERN boolean remove_temporary_at_error;
122 EXTERN boolean recover_archive_when_interrupt;
123 EXTERN boolean remove_extracting_file_when_interrupt;
124 EXTERN boolean get_filename_from_stdin;
125 EXTERN boolean ignore_directory;
126 EXTERN boolean verify_mode;
129 EXTERN int quiet_mode;
131 /* ------------------------------------------------------------------------ */
132 /* Globale Variable */
133 /* ------------------------------------------------------------------------ */
134 EXTERN char **cmd_filev;
135 EXTERN int cmd_filec;
137 EXTERN char *archive_name;
138 EXTERN char expanded_archive_name[FILENAME_LENGTH];
139 EXTERN char temporary_name[FILENAME_LENGTH];
140 EXTERN char backup_archive_name[FILENAME_LENGTH];
142 EXTERN char *reading_filename, *writting_filename;
144 /* 1996.8.13 t.okamoto */
146 EXTERN boolean remove_temporary_at_error;
147 EXTERN boolean recover_archive_when_interrupt;
148 EXTERN boolean remove_extracting_file_when_interrupt;
151 EXTERN int archive_file_mode;
152 EXTERN int archive_file_gid;
154 EXTERN struct interfacing interface;
156 /* EXTERN unsigned short crc; */ /* 1996.8.13 t.okamoto */
158 EXTERN int noconvertcase; /* 2000.10.6 */
161 EXTERN int unpackable;
162 EXTERN unsigned long origsize, compsize;
163 EXTERN unsigned short dicbit;
164 EXTERN unsigned short maxmatch;
165 EXTERN unsigned long count;
166 EXTERN unsigned long loc; /* short -> long .. Changed N.Watazaki */
167 EXTERN unsigned char *text;
168 EXTERN int prev_char;
171 #ifndef LHA_MAIN_SRC /* t.okamoto 96/2/20 */
172 EXTERN unsigned short left[], right[];
173 EXTERN unsigned char c_len[], pt_len[];
174 EXTERN unsigned short c_freq[], c_table[], c_code[];
175 EXTERN unsigned short p_freq[], pt_table[], pt_code[], t_freq[];
179 #ifdef NEED_INCREMENTAL_INDICATOR
180 EXTERN long indicator_count;
181 EXTERN long indicator_threshold;
185 EXTERN FILE *infile, *outfile;
186 EXTERN unsigned short crc, bitbuf;
188 EXTERN long reading_size;
191 EXTERN unsigned int n_max;
194 EXTERN FILE *temporary_fp;
196 /* ------------------------------------------------------------------------ */
198 /* ------------------------------------------------------------------------ */
200 extern int patmatch();
202 extern void interrupt();
204 extern void message();
205 extern void warning();
207 extern void fatal_error();
209 extern boolean need_file();
210 extern int inquire();
211 extern FILE *xfopen();
213 extern boolean find_files();
214 extern void free_files();
216 extern void init_sp();
217 extern void add_sp();
218 extern void finish_sp();
219 extern void free_sp();
220 extern void cleaning_files();
222 extern void build_temporary_name();
223 extern void build_backup_file_name();
224 extern void build_standard_archive_name();
226 extern FILE *open_old_archive();
227 extern void init_header();
228 extern boolean get_header();
229 extern boolean archive_is_msdos_sfx1();
230 extern boolean skip_msdos_sfx1_code();
231 extern void write_header();
232 extern void write_archive_tail();
233 extern void copy_old_one();
234 extern unsigned char *convdelim();
235 extern long copyfile();
237 extern void cmd_list(), cmd_extract(), cmd_add(), cmd_delete();
239 extern boolean ignore_directory;
240 extern boolean compress_method;
241 extern boolean verify_mode;
243 extern char *extract_directory;
247 extern int encode_alloc();
248 extern void encode();
249 extern void decode();
252 extern void start_indicator();
253 extern void finish_indicator();
254 extern void finish_indicator2();
257 extern void output_st1();
258 extern unsigned char *alloc_buf();
259 extern void encode_start_st1();
260 extern void encode_end_st1();
261 extern unsigned short decode_c_st1();
262 extern unsigned short decode_p_st1();
263 extern void decode_start_st1();
266 extern void decode_start_st0();
267 extern void encode_p_st0( /* unsigned short j */ );
268 extern void encode_start_fix();
269 extern void decode_start_fix();
270 extern unsigned short decode_c_st0();
271 extern unsigned short decode_p_st0();
274 extern void start_c_dyn();
275 extern void decode_start_dyn();
276 extern unsigned short decode_c_dyn();
277 extern unsigned short decode_p_dyn();
278 extern void output_dyn( /* int code, unsigned int pos */ );
279 extern void encode_end_dyn();
281 extern int decode_lzhuf();
285 extern unsigned short decode_c_lzs();
286 extern unsigned short decode_p_lzs();
287 extern unsigned short decode_c_lz5();
288 extern unsigned short decode_p_lz5();
289 extern void decode_start_lzs();
290 extern void decode_start_lz5();
292 extern void make_table( /* int nchar, uchar bitlen[], int tablebits,
295 /* from maketree.c */
297 * void make_code(short n, uchar len[], ushort code[]); short make_tree(short
298 * nparm, ushort freqparm[], uchar lenparm[], ushort codeparam[]);
300 extern void make_code( /* int n, uchar len[], ushort code[] */ );
301 extern short make_tree( /* int nparm, ushort freqparm[], uchar lenparm[],
302 ushort codeparam[] */ );
305 extern void make_crctable();
306 extern unsigned short calccrc( /* uchar *p, uint n */ );
307 extern void fillbuf( /* uchar n */ );
308 extern unsigned short getbits( /* uchar n */ );
309 extern void putcode( /* uchar n, ushort x */ );
310 extern void putbits( /* uchar n, ushort x */ );
311 extern int fread_crc( /* uchar *p, int n, FILE *f */ );
312 extern void fwrite_crc( /* uchar *p, int n, FILE *f */ );
313 extern void init_getbits();
314 extern void init_putbits();
315 extern void make_crctable();
316 extern unsigned short calccrc();
319 extern int encode_lzhuf();
320 extern int encode_stored_crc();
323 void euc2sjis(int *p1, int *p2);
324 void sjis2euc(int *p1, int *p2);
326 /* Local Variables: */