Raw File
fsz.cc
/*
  This file is part of the FRED system.

  Copyright (c) 2010-2015, University of Pittsburgh, John Grefenstette,
  Shawn Brown, Roni Rosenfield, Alona Fyshe, David Galloway, Nathan
  Stone, Jay DePasse, Anuroop Sriram, and Donald Burke.

  Licensed under the BSD 3-Clause license.  See the file "LICENSE" for
  more information.
*/

#include <string>
#include <cstring>
#include <sstream>
#include <fstream>
#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

#include "Compression.h"


int main( int argc, char *argv[] ) {

  int compress_flag = 0;
  int uncompress_flag = 0;

  opterr = 0;
  extern char * optarg;

  char f;

  char * filename;

  while ((f = getopt (argc, argv, "c:u:")) != -1) {
    switch (f) {
    case 'c':
      compress_flag = 1;
      filename = optarg;
      break;
    case 'u':
      uncompress_flag = 1;
      filename = optarg;
      break;
    case '?':
      std::cerr << "\nfsz, FRED's snappy compression utility.  Usage:\n\n";
      std::cerr << "  fsz -c <file> => file will be compressed using snappy and written to stdout\n";
      std::cerr << "  fsz -u <file> => file assumed to have been compressed with snappy; will be uncompressed to stdout\n\n";
      break;
    default:
      abort();
    }
  }

  if ( compress_flag && uncompress_flag ) {
    std::cerr << "Specify either [-c] or [-u], not both\n\n";
    exit(1);
  }
  else if ( !compress_flag && !uncompress_flag ) {
    std::cerr << "Specify either [-c] or [-u]\n\n";
    exit(1);
  }

  SnappyFileCompression compressor = SnappyFileCompression( filename );

  if ( compress_flag ) {
    compressor.compress_file_to_stdout();
  }
  else if ( uncompress_flag ) {
    compressor.uncompress_file_to_stdout();
  }

}
back to top