OSDN Git Service

* src/indicator.c (carriage_return): newly added; print CR on tty only.
[lha/lha.git] / src / append.c
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
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 }