OSDN Git Service

* src/huf.c: use HAVE_SYS_PARAM_H instead of sony_news.
[lha/lha.git] / src / lha.h
1 /* ------------------------------------------------------------------------ */
2 /* LHa for UNIX    Archiver Driver                                                                                      */
3 /*                                                                                                                                                      */
4 /*              Modified                        Nobutaka Watazaki                                                       */
5 /*                                                                                                                                                      */
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 /* ------------------------------------------------------------------------ */
9 /*
10         Included...
11                 lharc.h         interface.h             slidehuf.h
12 */
13
14 #ifdef HAVE_CONFIG_H
15 # include <config.h>
16 #endif
17
18 #include <stdio.h>
19 #include <errno.h>
20 #include <ctype.h>
21 #include <sys/types.h>
22 #include <sys/file.h>
23 #include <sys/stat.h>
24
25 #include <signal.h>
26
27 #include "lha_macro.h"
28
29 struct encode_option {
30 #if defined(__STDC__) || defined(AIX)
31         void            (*output) ();
32         void            (*encode_start) ();
33         void            (*encode_end) ();
34 #else
35         int             (*output) ();
36         int             (*encode_start) ();
37         int             (*encode_end) ();
38 #endif
39 };
40
41 struct decode_option {
42         unsigned short  (*decode_c) ();
43         unsigned short  (*decode_p) ();
44 #if defined(__STDC__) || defined(AIX)
45         void            (*decode_start) ();
46 #else
47         int             (*decode_start) ();
48 #endif
49 };
50
51 /* ------------------------------------------------------------------------ */
52 /*      LHa File Type Definition                                                                                                */
53 /* ------------------------------------------------------------------------ */
54 struct string_pool {
55         int             used;
56         int             size;
57         int             n;
58         char           *buffer;
59 };
60
61 typedef struct LzHeader {
62         unsigned char   header_size;
63         char            method[METHOD_TYPE_STRAGE];
64         long            packed_size;
65         long            original_size;
66         long            last_modified_stamp;
67         unsigned char   attribute;
68         unsigned char   header_level;
69         char            name[256];
70         unsigned short  crc;
71         boolean         has_crc;
72         unsigned char   extend_type;
73         unsigned char   minor_version;
74
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;
80 }  LzHeader;
81
82 struct interfacing {
83         FILE                    *infile;
84         FILE                    *outfile;
85         unsigned long   original;
86         unsigned long   packed;
87         int             dicbit;
88         int             method;
89 };
90
91
92 /* ------------------------------------------------------------------------ */
93 /*      Option switch variable                                                                                                  */
94 /* ------------------------------------------------------------------------ */
95 /* command line options (common options) */
96 EXTERN boolean  quiet;
97 EXTERN boolean  text_mode;
98 EXTERN boolean  verbose;
99 EXTERN boolean  noexec;         /* debugging option */
100 EXTERN boolean  force;
101 EXTERN boolean  prof;
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 */
106 #ifdef EUC
107 EXTERN boolean  euc_mode;
108 #endif
109
110 /* list command flags */
111 EXTERN boolean  verbose_listing;
112
113 /* extract/print command flags */
114 EXTERN boolean  output_to_stdout;
115
116 /* add/update/delete command flags */
117 EXTERN boolean  new_archive;
118 EXTERN boolean  update_if_newer;
119 EXTERN boolean  generic_format;
120
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;
127
128 /* Indicator flag */
129 EXTERN int              quiet_mode;
130
131 /* ------------------------------------------------------------------------ */
132 /*      Globale Variable                                                                                                                */
133 /* ------------------------------------------------------------------------ */
134 EXTERN char             **cmd_filev;
135 EXTERN int      cmd_filec;
136
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];
141
142 EXTERN char             *reading_filename, *writting_filename;
143
144 /* 1996.8.13 t.okamoto */
145 #if 0
146 EXTERN boolean  remove_temporary_at_error;
147 EXTERN boolean  recover_archive_when_interrupt;
148 EXTERN boolean  remove_extracting_file_when_interrupt;
149 #endif
150
151 EXTERN int      archive_file_mode;
152 EXTERN int      archive_file_gid;
153
154 EXTERN struct   interfacing interface;
155 EXTERN node             *next;
156 /* EXTERN unsigned short crc; */  /* 1996.8.13 t.okamoto */
157
158 EXTERN int      noconvertcase; /* 2000.10.6 */
159
160 /* slide.c */
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;
169
170 /* huf.c */
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[];
176 #endif
177
178 /* append.c */
179 #ifdef NEED_INCREMENTAL_INDICATOR
180 EXTERN long             indicator_count;
181 EXTERN long             indicator_threshold;
182 #endif
183
184 /* crcio.c */
185 EXTERN FILE             *infile, *outfile;
186 EXTERN unsigned short crc, bitbuf;
187 EXTERN int      dispflg;
188 EXTERN long             reading_size;
189
190 /* from dhuf.c */
191 EXTERN unsigned int n_max;
192
193 /* lhadd.c */
194 EXTERN int temporary_fd;
195
196 /* ------------------------------------------------------------------------ */
197 /*      Functions                                                                                                                               */
198 /* ------------------------------------------------------------------------ */
199 /* from lharc.c */
200 extern int              patmatch();
201
202 extern void             interrupt();
203
204 extern void             message();
205 extern void             warning();
206 extern void             error();
207 extern void             fatal_error();
208
209 extern boolean  need_file();
210 extern int              inquire();
211 extern FILE             *xfopen();
212
213 extern boolean  find_files();
214 extern void             free_files();
215
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();
221
222 extern int              build_temporary_name();
223 extern void             build_backup_file_name();
224 extern void             build_standard_archive_name();
225
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();
236
237 extern void             cmd_list(), cmd_extract(), cmd_add(), cmd_delete();
238
239 extern boolean  ignore_directory;
240 extern boolean  compress_method;
241 extern boolean  verify_mode;
242
243 extern char             *extract_directory;
244
245 /* from slide.c */
246
247 extern int              encode_alloc();
248 extern void             encode();
249 extern void             decode();
250
251 /* from append.c */
252 extern void     start_indicator();
253 extern void     finish_indicator();
254 extern void     finish_indicator2();
255
256 /* slide.c */
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();
264
265 /* from shuf.c */
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();
272
273 /* from dhuf.c */
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();
280
281 extern int      decode_lzhuf();
282
283 /* from larc.c */
284
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();
291
292 extern void     make_table(     /* int nchar, uchar bitlen[], int tablebits,
293                                                         ushort table[] */ );
294
295 /* from maketree.c */
296 /*
297  * void make_code(short n, uchar len[], ushort code[]); short make_tree(short
298  * nparm, ushort freqparm[], uchar lenparm[], ushort codeparam[]);
299  */
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[] */ );
303
304 /* from crcio.c */
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();
317
318 /* from lhadd.c */
319 extern int              encode_lzhuf();
320 extern int      encode_stored_crc();
321
322 /* from header.c */
323 void euc2sjis(int *p1, int *p2);
324 void sjis2euc(int *p1, int *p2);
325
326 /* Local Variables: */
327 /* mode:c */
328 /* tab-width:4 */
329 /* End: */
330
331