1 /* ------------------------------------------------------------------------ */
2 /* LHa for UNIX */
3 /* append.c -- append to 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
encode_lzhuf(infp,outfp,size,original_size_var,packed_size_var,name,hdr_method)12 encode_lzhuf(infp, outfp, size, original_size_var, packed_size_var,
13 name, hdr_method)
14 FILE *infp;
15 FILE *outfp;
16 size_t size;
17 size_t *original_size_var;
18 size_t *packed_size_var;
19 char *name;
20 char *hdr_method;
21 {
22 static int method = -1;
23 unsigned int crc;
24 struct interfacing interface;
25
26 if (method < 0) {
27 method = compress_method;
28 if (method > 0)
29 method = encode_alloc(method);
30 }
31
32 interface.method = method;
33
34 if (interface.method > 0) {
35 interface.infile = infp;
36 interface.outfile = outfp;
37 interface.original = size;
38 start_indicator(name, size, "Freezing", 1 << dicbit);
39 crc = encode(&interface);
40 *packed_size_var = interface.packed;
41 *original_size_var = interface.original;
42 } else {
43 *packed_size_var = *original_size_var =
44 copyfile(infp, outfp, size, 0, &crc);
45 }
46 memcpy(hdr_method, "-lh -", 5);
47 hdr_method[3] = interface.method + '0';
48
49 finish_indicator2(name, "Frozen",
50 (int) ((*packed_size_var * 100L) / *original_size_var));
51 return crc;
52 }
53