source: libwandio/tools/wandiocat/wcat.c @ cd8efa6

4.0.1-hotfixescachetimestampsdevelopdpdk-ndagetsilivelibtrace4ndag_formatpfringrc-4.0.1rc-4.0.2rc-4.0.3rc-4.0.4ringdecrementfixringperformanceringtimestampfixes
Last change on this file since cd8efa6 was cd8efa6, checked in by Shane Alcock <salcock@…>, 6 years ago

Move wandiocat to its own subdir

This seems the easiest way to solve the parallel build issue
given our current recursive build structure.

  • Property mode set to 100644
File size: 3.0 KB
Line 
1#include "wandio.h"
2#include <ctype.h>
3#include <err.h>
4#include <getopt.h>
5#include <stdlib.h>
6#include <string.h>
7
8static void printhelp() {
9        printf("wandiocat: concatenate files into a single compressed file\n");
10        printf("\n");
11        printf("Available options:\n\n");
12        printf(" -z <level>\n");
13        printf("    Sets a compression level for the output file, must be \n");
14        printf("    between 0 (uncompressed) and 9 (max compression)\n"); 
15        printf("    Default is 0.\n");
16        printf(" -Z <method>\n");
17        printf("    Set the compression method. Must be one of 'gzip', \n");
18        printf("    'bzip2', 'lzo' or 'lzma'. If not specified, no\n");
19        printf("    compression is performed.\n");
20        printf(" -o <file>\n");
21        printf("    The name of the output file. If not specified, output\n");
22        printf("    is written to standard output.\n");
23}
24
25
26int main(int argc, char *argv[])
27{
28        int compress_level = 0;
29        int compress_type = WANDIO_COMPRESS_NONE;
30        char *output = "-";
31        char c;
32        while ((c = getopt (argc, argv, "Z:z:o:h")) != -1) {
33                switch (c)
34                {
35                case 'Z':
36                        compress_type = wandio_lookup_compression_type(optarg)
37                                        ->compress_type;
38                        break;
39                case 'z':
40                        compress_level = atoi(optarg);
41                        break;
42                case 'o':
43                        output = optarg;
44                        break;
45                case 'h':
46                        printhelp();
47                        return 0;
48                case '?':
49                        if (optopt == 'Z' || optopt == 'z' || optopt == 'o')
50                                fprintf (stderr, "Option -%c requires an argument.\n", optopt);
51                        else if (isprint (optopt))
52                                fprintf (stderr, "Unknown option `-%c'.\n", optopt);
53                        else
54                                fprintf (stderr, "Unknown option character `\\x%x'.\n", optopt);
55                        return 1;
56                default:
57                        abort ();
58                }
59        }
60
61        iow_t *iow = wandio_wcreate(output, compress_type, compress_level, 0);
62        /* stdout */
63        int i;
64        for(i=optind; i<argc; ++i) {
65                char buffer[1024*1024];
66                io_t *ior = wandio_create(argv[i]);
67                if (!ior) {
68                        fprintf(stderr, "Failed to open %s\n", argv[i]);
69                        continue;
70                }
71
72                off_t len;
73                do {
74                        len = wandio_read(ior, buffer, sizeof(buffer));
75                        if (len > 0)
76                                wandio_wwrite(iow, buffer, len);
77                } while(len > 0);
78
79                wandio_destroy(ior);
80        }
81        wandio_wdestroy(iow);
82        return 0;
83}
Note: See TracBrowser for help on using the repository browser.