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)
22 struct interfacing interface;
24 interface.method = method;
25 interface.infile = infp;
26 interface.outfile = outfp;
27 interface.original = original_size;
28 interface.packed = packed_size;
29 interface.read_size = 0;
32 case LZHUFF0_METHOD_NUM: /* -lh0- */
33 interface.dicbit = LZHUFF0_DICBIT;
35 case LZHUFF1_METHOD_NUM: /* -lh1- */
36 interface.dicbit = LZHUFF1_DICBIT;
38 case LZHUFF2_METHOD_NUM: /* -lh2- */
39 interface.dicbit = LZHUFF2_DICBIT;
41 case LZHUFF3_METHOD_NUM: /* -lh2- */
42 interface.dicbit = LZHUFF3_DICBIT;
44 case LZHUFF4_METHOD_NUM: /* -lh4- */
45 interface.dicbit = LZHUFF4_DICBIT;
47 case LZHUFF5_METHOD_NUM: /* -lh5- */
48 interface.dicbit = LZHUFF5_DICBIT;
50 case LZHUFF6_METHOD_NUM: /* -lh6- */
51 interface.dicbit = LZHUFF6_DICBIT;
53 case LZHUFF7_METHOD_NUM: /* -lh7- */
54 interface.dicbit = LZHUFF7_DICBIT;
56 case LARC_METHOD_NUM: /* -lzs- */
57 interface.dicbit = LARC_DICBIT;
59 case LARC5_METHOD_NUM: /* -lz5- */
60 interface.dicbit = LARC5_DICBIT;
62 case LARC4_METHOD_NUM: /* -lz4- */
63 interface.dicbit = LARC4_DICBIT;
65 case PMARC0_METHOD_NUM: /* -pm0- */
66 interface.dicbit = PMARC0_DICBIT;
68 case PMARC2_METHOD_NUM: /* -pm2- */
69 interface.dicbit = PMARC2_DICBIT;
72 warning("unknown method %d", method);
73 interface.dicbit = LZHUFF5_DICBIT; /* for backward compatibility */
77 if (interface.dicbit == 0) { /* LZHUFF0_DICBIT or LARC4_DICBIT or PMARC0_DICBIT*/
80 verify_mode ? "Testing " : "Melting ",
84 printf("no use slide\n");
86 *read_sizep = copyfile(infp, (verify_mode ? NULL : outfp),
87 original_size, 2, &crc);
92 verify_mode ? "Testing " : "Melting ",
93 1 << interface.dicbit);
97 crc = decode(&interface);
98 *read_sizep = interface.read_size;
101 finish_indicator(name, verify_mode ? "Tested " : "Melted ");