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>
41 #include "lha_macro.h"
43 struct encode_option {
44 #if defined(__STDC__) || defined(AIX)
46 void (*encode_start) ();
47 void (*encode_end) ();
50 int (*encode_start) ();
55 struct decode_option {
56 unsigned short (*decode_c) ();
57 unsigned short (*decode_p) ();
58 #if defined(__STDC__) || defined(AIX)
59 void (*decode_start) ();
61 int (*decode_start) ();
65 /* ------------------------------------------------------------------------ */
66 /* LHa File Type Definition */
67 /* ------------------------------------------------------------------------ */
75 typedef struct LzHeader {
76 unsigned char header_size;
77 char method[METHOD_TYPE_STRAGE];
80 long last_modified_stamp;
81 unsigned char attribute;
82 unsigned char header_level;
86 unsigned char extend_type;
87 unsigned char minor_version;
89 /* extend_type == EXTEND_UNIX and convert from other type. */
90 time_t unix_last_modified_stamp;
91 unsigned short unix_mode;
92 unsigned short unix_uid;
93 unsigned short unix_gid;
101 unsigned long original;
102 unsigned long packed;
108 /* ------------------------------------------------------------------------ */
109 /* Option switch variable */
110 /* ------------------------------------------------------------------------ */
111 /* command line options (common options) */
112 EXTERN boolean quiet;
113 EXTERN boolean text_mode;
114 EXTERN boolean verbose;
115 EXTERN boolean noexec; /* debugging option */
116 EXTERN boolean force;
118 EXTERN boolean delete_after_append;
119 EXTERN int compress_method;
120 EXTERN int header_level;
121 /* EXTERN int quiet_mode; */ /* 1996.8.13 t.okamoto */
123 EXTERN boolean euc_mode;
126 /* list command flags */
127 EXTERN boolean verbose_listing;
129 /* extract/print command flags */
130 EXTERN boolean output_to_stdout;
132 /* add/update/delete command flags */
133 EXTERN boolean new_archive;
134 EXTERN boolean update_if_newer;
135 EXTERN boolean generic_format;
137 EXTERN boolean remove_temporary_at_error;
138 EXTERN boolean recover_archive_when_interrupt;
139 EXTERN boolean remove_extracting_file_when_interrupt;
140 EXTERN boolean get_filename_from_stdin;
141 EXTERN boolean ignore_directory;
142 EXTERN boolean verify_mode;
145 EXTERN int quiet_mode;
147 /* ------------------------------------------------------------------------ */
148 /* Globale Variable */
149 /* ------------------------------------------------------------------------ */
150 EXTERN char **cmd_filev;
151 EXTERN int cmd_filec;
153 EXTERN char *archive_name;
154 EXTERN char temporary_name[FILENAME_LENGTH];
155 EXTERN char backup_archive_name[FILENAME_LENGTH];
157 EXTERN char *reading_filename, *writting_filename;
159 /* 1996.8.13 t.okamoto */
161 EXTERN boolean remove_temporary_at_error;
162 EXTERN boolean recover_archive_when_interrupt;
163 EXTERN boolean remove_extracting_file_when_interrupt;
166 EXTERN int archive_file_mode;
167 EXTERN int archive_file_gid;
169 EXTERN struct interfacing interface;
171 /* EXTERN unsigned short crc; */ /* 1996.8.13 t.okamoto */
173 EXTERN int noconvertcase; /* 2000.10.6 */
176 EXTERN int unpackable;
177 EXTERN unsigned long origsize, compsize;
178 EXTERN unsigned short dicbit;
179 EXTERN unsigned short maxmatch;
180 EXTERN unsigned long count;
181 EXTERN unsigned long loc; /* short -> long .. Changed N.Watazaki */
182 EXTERN unsigned char *text;
183 EXTERN int prev_char;
186 #ifndef LHA_MAIN_SRC /* t.okamoto 96/2/20 */
187 EXTERN unsigned short left[], right[];
188 EXTERN unsigned char c_len[], pt_len[];
189 EXTERN unsigned short c_freq[], c_table[], c_code[];
190 EXTERN unsigned short p_freq[], pt_table[], pt_code[], t_freq[];
194 #ifdef NEED_INCREMENTAL_INDICATOR
195 EXTERN long indicator_count;
196 EXTERN long indicator_threshold;
200 EXTERN FILE *infile, *outfile;
201 EXTERN unsigned short crc, bitbuf;
203 EXTERN long reading_size;
206 EXTERN unsigned int n_max;
209 EXTERN int temporary_fd;
211 /* ------------------------------------------------------------------------ */
213 /* ------------------------------------------------------------------------ */
215 extern int patmatch();
217 extern void interrupt();
219 extern void message(char *fmt, ...);
220 extern void warning(char *fmt, ...);
221 extern void error(char *fmt, ...);
222 extern void fatal_error(char *fmt, ...);
224 extern boolean need_file();
225 extern int inquire();
226 extern FILE *xfopen();
228 extern boolean find_files();
229 extern void free_files();
231 extern void init_sp();
232 extern void add_sp();
233 extern void finish_sp();
234 extern void free_sp();
235 extern void cleaning_files();
237 extern int build_temporary_name();
238 extern void build_backup_file_name();
239 extern void build_standard_archive_name();
241 extern FILE *open_old_archive();
242 extern boolean archive_is_msdos_sfx1();
243 extern boolean skip_msdos_sfx1_code();
244 extern void write_archive_tail();
245 extern void copy_old_one();
246 extern unsigned char *convdelim();
247 extern long copyfile();
249 extern void cmd_list(), cmd_extract(), cmd_add(), cmd_delete();
251 extern boolean ignore_directory;
252 extern boolean compress_method;
253 extern boolean verify_mode;
255 extern char *extract_directory;
259 extern int encode_alloc();
260 extern void encode();
261 extern void decode();
264 extern void start_indicator();
265 extern void finish_indicator();
266 extern void finish_indicator2();
269 extern void output_st1();
270 extern unsigned char *alloc_buf();
271 extern void encode_start_st1();
272 extern void encode_end_st1();
273 extern unsigned short decode_c_st1();
274 extern unsigned short decode_p_st1();
275 extern void decode_start_st1();
278 extern void decode_start_st0();
279 extern void encode_p_st0( /* unsigned short j */ );
280 extern void encode_start_fix();
281 extern void decode_start_fix();
282 extern unsigned short decode_c_st0();
283 extern unsigned short decode_p_st0();
286 extern void start_c_dyn();
287 extern void decode_start_dyn();
288 extern unsigned short decode_c_dyn();
289 extern unsigned short decode_p_dyn();
290 extern void output_dyn( /* int code, unsigned int pos */ );
291 extern void encode_end_dyn();
293 extern int decode_lzhuf();
297 extern unsigned short decode_c_lzs();
298 extern unsigned short decode_p_lzs();
299 extern unsigned short decode_c_lz5();
300 extern unsigned short decode_p_lz5();
301 extern void decode_start_lzs();
302 extern void decode_start_lz5();
304 extern void make_table( /* int nchar, uchar bitlen[], int tablebits,
307 /* from maketree.c */
309 * void make_code(short n, uchar len[], ushort code[]); short make_tree(short
310 * nparm, ushort freqparm[], uchar lenparm[], ushort codeparam[]);
312 extern void make_code( /* int n, uchar len[], ushort code[] */ );
313 extern short make_tree( /* int nparm, ushort freqparm[], uchar lenparm[],
314 ushort codeparam[] */ );
317 extern void make_crctable();
318 extern unsigned short calccrc( /* uchar *p, uint n */ );
319 extern void fillbuf( /* uchar n */ );
320 extern unsigned short getbits( /* uchar n */ );
321 extern void putcode( /* uchar n, ushort x */ );
322 extern void putbits( /* uchar n, ushort x */ );
323 extern int fread_crc( /* uchar *p, int n, FILE *f */ );
324 extern void fwrite_crc( /* uchar *p, int n, FILE *f */ );
325 extern void init_getbits();
326 extern void init_putbits();
327 extern void make_crctable();
328 extern unsigned short calccrc();
331 extern int encode_lzhuf();
332 extern int encode_stored_crc();
335 extern boolean get_header();
336 extern void init_header();
337 extern void write_header();
338 extern char *sjis_to_utf8(char *, const char *, size_t);
339 extern char *utf8_to_sjis(char *, const char *, size_t);
340 void euc2sjis(int *p1, int *p2);
341 void sjis2euc(int *p1, int *p2);
344 int xsnprintf(char *dest, size_t size, char *fmt, ...);
345 char *xstrchr(const char *s, int c);
346 char *xstrrchr(const char *s, int c);
347 char *xmemchr(const char *s, int c, size_t n);
348 char *xmemrchr(const char *s, int c, size_t n);
350 /* from vsnprintf.c */
352 int vsnprintf(char *str, size_t n, const char *fmt, va_list ap);
353 int snprintf(char *str, size_t n, char const *fmt, ...);
356 /* Local Variables: */
360 /* vi: set tabstop=4: */