1 /* ------------------------------------------------------------------------ */
2 /* LHa for UNIX */
3 /* extract.c -- extrcat from archive */
4 /* */
5 /* Modified Nobutaka Watazaki */
6 /* */
7 /* Ver. 1.14 Source All chagned 1995.01.14 N.Watazaki */
8 /* ------------------------------------------------------------------------ */
9 #include "lha.h"
10
11 int
decode_lzhuf(infp,outfp,original_size,packed_size,name,method)12 decode_lzhuf(infp, outfp, original_size, packed_size, name, method)
13 FILE *infp;
14 FILE *outfp;
15 long original_size;
16 long packed_size;
17 char *name;
18 int method;
19 {
20 interface.method = method;
21 interface.dicbit = 13; /* method + 8; -lh5- */
22 interface.infile = infp;
23 interface.outfile = outfp;
24 interface.original = original_size;
25 interface.packed = packed_size;
26
27 switch (method) {
28 case LZHUFF0_METHOD_NUM:
29 case LARC4_METHOD_NUM:
30 start_indicator(name, original_size
31 ,verify_mode ? "Testing " : "Melting ", 2048);
32 copyfile(infp, (verify_mode ? NULL : outfp), original_size, 2);
33 break;
34 case LARC_METHOD_NUM: /* -lzs- */
35 interface.dicbit = 11;
36 start_indicator(name, original_size
37 ,verify_mode ? "Testing " : "Melting "
38 ,1 << interface.dicbit);
39 decode(&interface);
40 break;
41 case LZHUFF1_METHOD_NUM: /* -lh1- */
42 case LZHUFF4_METHOD_NUM: /* -lh4- */
43 case LARC5_METHOD_NUM: /* -lz5- */
44 interface.dicbit = 12;
45 start_indicator(name, original_size
46 ,verify_mode ? "Testing " : "Melting "
47 ,1 << interface.dicbit);
48 decode(&interface);
49 break;
50 case LZHUFF6_METHOD_NUM: /* -lh6- */ /* Added N.Watazaki (^_^) */
51 #ifdef SUPPORT_LH7
52 case LZHUFF7_METHOD_NUM: /* -lh7- */
53 #endif
54 interface.dicbit = (method - LZHUFF6_METHOD_NUM) + 15;
55
56 default:
57 start_indicator(name, original_size
58 ,verify_mode ? "Testing " : "Melting "
59 ,1 << interface.dicbit);
60 decode(&interface);
61 }
62 finish_indicator(name, verify_mode ? "Tested " : "Melted ");
63
64 return crc;
65 }
66
67 /* Local Variables: */
68 /* mode:c */
69 /* tab-width:4 */
70 /* End: */
71