1 /* ------------------------------------------------------------------------ */
3 /* extract.c -- extrcat from archive */
5 /* Modified Nobutaka Watazaki */
7 /* Ver. 1.14 Source All chagned 1995.01.14 N.Watazaki */
8 /* ------------------------------------------------------------------------ */
12 decode_lzhuf(infp, outfp, original_size, packed_size, name, method, read_sizep)
23 interface.method = method;
24 interface.dicbit = 13; /* method + 8; -lh5- */
25 interface.infile = infp;
26 interface.outfile = outfp;
27 interface.original = original_size;
28 interface.packed = packed_size;
29 interface.read_size = 0;
31 *read_sizep = packed_size;
34 case LZHUFF0_METHOD_NUM:
35 case LARC4_METHOD_NUM:
36 start_indicator(name, original_size
37 ,verify_mode ? "Testing " : "Melting ", 2048);
38 *read_sizep = copyfile(infp, (verify_mode ? NULL : outfp),
39 original_size, 2, &crc);
41 case LARC_METHOD_NUM: /* -lzs- */
42 interface.dicbit = 11;
43 start_indicator(name, original_size
44 ,verify_mode ? "Testing " : "Melting "
45 ,1 << interface.dicbit);
46 crc = decode(&interface);
47 *read_sizep = interface.read_size;
49 case LZHUFF1_METHOD_NUM: /* -lh1- */
50 case LZHUFF4_METHOD_NUM: /* -lh4- */
51 case LARC5_METHOD_NUM: /* -lz5- */
52 interface.dicbit = 12;
53 start_indicator(name, original_size
54 ,verify_mode ? "Testing " : "Melting "
55 ,1 << interface.dicbit);
56 crc = decode(&interface);
57 *read_sizep = interface.read_size;
59 case LZHUFF6_METHOD_NUM: /* -lh6- */ /* Added N.Watazaki (^_^) */
61 case LZHUFF7_METHOD_NUM: /* -lh7- */
63 interface.dicbit = (method - LZHUFF6_METHOD_NUM) + 15;
66 start_indicator(name, original_size
67 ,verify_mode ? "Testing " : "Melting "
68 ,1 << interface.dicbit);
69 crc = decode(&interface);
70 *read_sizep = interface.read_size;
72 finish_indicator(name, verify_mode ? "Tested " : "Melted ");