Ignore:
Timestamp:
04/23/10 10:41:23 (12 years ago)
Author:
Shane Alcock <salcock@…>
Branches:
4.0.1-hotfixes, cachetimestamps, develop, dpdk-ndag, etsilive, getfragoff, help, libtrace4, master, ndag_format, pfring, rc-4.0.1, rc-4.0.2, rc-4.0.3, rc-4.0.4, ringdecrementfix, ringperformance, ringtimestampfixes
Children:
db9fa93
Parents:
bfe8535
Message:
  • Updated traceanon to support a compression type option
File:
1 edited

Legend:

Unmodified
Added
Removed
  • tools/traceanon/traceanon.c

    r71ff20e r97b5bf4  
    2222        "-p --prefix=C.I.D.R/bits Substitute the prefix of the address\n"
    2323        "-H --libtrace-help     Print libtrace runtime documentation\n"
     24        "-z --compression-level Compress the output trace at the specified level\n"
     25        "-Z --compression-type  Compress the output trace using the specified                                   compression algorithm\n"
    2426        ,argv0);
    2527        exit(1);
     
    110112        bool enc_dest   = false;
    111113        char *output = 0;
    112         int level = 1;
     114        int level = -1;
     115        char *compress_type_str=NULL;
     116        trace_option_compresstype_t compress_type = TRACE_OPTION_COMPRESSTYPE_NONE;
     117
    113118
    114119        if (argc<2)
     
    123128                        { "prefix",             1, 0, 'p' },
    124129                        { "compression-level",  1, 0, 'z' },
     130                        { "compression-type",   1, 0, 'Z' },
    125131                        { "libtrace-help",      0, 0, 'H' },
    126132                        { NULL,                 0, 0, 0   },
    127133                };
    128134
    129                 int c=getopt_long(argc, argv, "z:sc:dp:H",
     135                int c=getopt_long(argc, argv, "Z:z:sc:dp:H",
    130136                                long_options, &option_index);
    131137
     
    134140
    135141                switch (c) {
     142                        case 'Z': compress_type_str=optarg; break;         
    136143                        case 'z': level = atoi(optarg); break;
    137144                        case 's': enc_source=true; break;
     
    165172        }
    166173
     174        if (compress_type_str == NULL && level >= 0) {
     175                fprintf(stderr, "Compression level set, but no compression type was defined, setting to gzip\n");
     176                compress_type = TRACE_OPTION_COMPRESSTYPE_ZLIB;
     177        }
     178
     179        else if (compress_type_str == NULL) {
     180                /* If a level or type is not specified, use the "none"
     181                 * compression module */
     182                compress_type = TRACE_OPTION_COMPRESSTYPE_NONE;
     183        }
     184
     185        /* I decided to be fairly generous in what I accept for the
     186         * compression type string */
     187        else if (strncmp(compress_type_str, "gz", 2) == 0 ||
     188                        strncmp(compress_type_str, "zlib", 4) == 0) {
     189                compress_type = TRACE_OPTION_COMPRESSTYPE_ZLIB;
     190        } else if (strncmp(compress_type_str, "bz", 2) == 0) {
     191                compress_type = TRACE_OPTION_COMPRESSTYPE_BZ2;
     192        } else if (strncmp(compress_type_str, "lzo", 3) == 0) {
     193                compress_type = TRACE_OPTION_COMPRESSTYPE_LZO;
     194        } else if (strncmp(compress_type_str, "no", 2) == 0) {
     195                compress_type = TRACE_OPTION_COMPRESSTYPE_NONE;
     196        } else {
     197                fprintf(stderr, "Unknown compression type: %s\n",
     198                        compress_type_str);
     199                return 1;
     200        }
     201       
     202
    167203        enc_init(enc_type,key);
    168204
     
    191227        }
    192228       
    193         if (trace_config_output(writer, TRACE_OPTION_OUTPUT_COMPRESS,
    194                                 &level) == -1) {
     229        /* Hopefully this will deal nicely with people who want to crank the
     230         * compression level up to 11 :) */
     231        if (level > 9) {
     232                fprintf(stderr, "WARNING: Compression level > 9 specified, setting to 9 instead\n");
     233                level = 9;
     234        }
     235
     236        if (level >= 0 && trace_config_output(writer,
     237                        TRACE_OPTION_OUTPUT_COMPRESS, &level) == -1) {
    195238                trace_perror_output(writer, "Configuring compression level");
     239                trace_destroy_output(writer);
     240                trace_destroy(trace);
     241                return 1;
     242        }
     243
     244        if (trace_config_output(writer, TRACE_OPTION_OUTPUT_COMPRESSTYPE,
     245                                &compress_type) == -1) {
     246                trace_perror_output(writer, "Configuring compression type");
    196247                trace_destroy_output(writer);
    197248                trace_destroy(trace);
Note: See TracChangeset for help on using the changeset viewer.