From 285cb7cdd5b05e90f301c11fd54e7a33cb20483b Mon Sep 17 00:00:00 2001 From: r3tr0d3v <45923497+r3tr0d3v@users.noreply.github.com> Date: Sun, 16 Dec 2018 20:50:08 +0000 Subject: [PATCH] Add files via upload --- Makefile | 7 ++- smaz.c | 136 ++++++++++++++++++++++++++-------------------------- smaz.h | 2 +- smaz_tool.c | 74 ++++++++++++++++++++++++++++ 4 files changed, 148 insertions(+), 71 deletions(-) create mode 100644 smaz_tool.c diff --git a/Makefile b/Makefile index 62e8ccb..bdc2382 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,10 @@ -all: smaz_test +all: smaz_test smaz_tool smaz_test: smaz_test.c smaz.c gcc -o smaz_test -O2 -Wall -W -ansi -pedantic smaz.c smaz_test.c +smaz_tool: smaz.c smaz_tool.c + gcc -o smaz_tool -O2 -Wall -W -ansi -pedantic smaz.c smaz_tool.c + clean: - rm -rf smaz_test + rm -rf smaz_test smaz_tool diff --git a/smaz.c b/smaz.c index aa674c3..016c5ff 100644 --- a/smaz.c +++ b/smaz.c @@ -2,78 +2,78 @@ /* Our compression codebook, used for compression */ static char *Smaz_cb[241] = { -"\002s,\266", "\003had\232\002leW", "\003on \216", "", "\001yS", -"\002ma\255\002li\227", "\003or \260", "", "\002ll\230\003s t\277", -"\004fromg\002mel", "", "\003its\332", "\001z\333", "\003ingF", "\001>\336", -"\001 \000\003 (\002nc\344", "\002nd=\003 on\312", -"\002ne\213\003hat\276\003re q", "", "\002ngT\003herz\004have\306\003s o\225", -"", "\003ionk\003s a\254\002ly\352", "\003hisL\003 inN\003 be\252", "", -"\003 fo\325\003 of \003 ha\311", "", "\002of\005", -"\003 co\241\002no\267\003 ma\370", "", "", "\003 cl\356\003enta\003 an7", -"\002ns\300\001\"e", "\003n t\217\002ntP\003s, \205", -"\002pe\320\003 we\351\002om\223", "\002on\037", "", "\002y G", "\003 wa\271", -"\003 re\321\002or*", "", "\002=\"\251\002ot\337", "\003forD\002ou[", -"\003 toR", "\003 th\r", "\003 it\366", -"\003but\261\002ra\202\003 wi\363\002<\346", "\002to\024", "\003arew", "\001d\030", -"\002tr\303", "", "\001\n1\003 a \222", "\003f tv\002veo", "\002un\340", "", -"\003e o\242", "\002a \243\002wa\326\001e\002", "\002ur\226\003e a\274", -"\002us\244\003\n\r\n\247", "\002ut\304\003e c\373", "\002we\221", "", "", -"\002wh\302", "\001f,", "", "", "", "\003d t\206", "", "", "\003th \343", -"\001g;", "", "", "\001\r9\003e s\265", "\003e t\234", "", "\003to Y", -"\003e\r\n\236", "\002d \036\001h\022", "", "\001,Q", "\002 a\031", "\002 b^", -"\002\r\n\025\002 cI", "\002 d\245", "\002 e\253", "\002 fh\001i\b\002e \v", -"", "\002 hU\001-\314", "\002 i8", "", "", "\002 l\315", "\002 m{", -"\002f :\002 n\354", "\002 o\035", "\002 p}\001.n\003\r\n\r\250", "", -"\002 r\275", "\002 s>", "\002 t\016", "", "\002g \235\005which+\003whi\367", -"\002 w5", "\001/\305", "\003as \214", "\003at \207", "", "\003who\331", "", -"\001l\026\002h \212", "", "\002, $", "", "\004withV", "", "", "", "\001m-", "", -"", "\002ac\357", "\002ad\350", "\003TheH", "", "", "\004this\233\001n\t", -"", "\002. y", "", "\002alX\003e, \365", "\003tio\215\002be\\", -"\002an\032\003ver\347", "", "\004that0\003tha\313\001o\006", "\003was2", -"\002arO", "\002as.", "\002at'\003the\001\004they\200\005there\322\005theird", -"\002ce\210", "\004were]", "", "\002ch\231\002l \264\001p<", "", "", -"\003one\256", "", "\003he \023\002dej", "\003ter\270", "\002cou", "", -"\002by\177\002di\201\002eax", "", "\002ec\327", "\002edB", "\002ee\353", "", -"", "\001r\f\002n )", "", "", "", "\002el\262", "", "\003in i\002en3", "", -"\002o `\001s\n", "", "\002er\033", "\003is t\002es6", "", "\002ge\371", -"\004.com\375", "\002fo\334\003our\330", "\003ch \301\001t\003", "\002hab", "", -"\003men\374", "", "\002he\020", "", "", "\001u&", "\002hif", "", -"\003not\204\002ic\203", "\003ed @\002id\355", "", "", "\002ho\273", -"\002r K\001vm", "", "", "", "\003t t\257\002il\360", "\002im\342", -"\003en \317\002in\017", "\002io\220", "\002s \027\001wA", "", "\003er |", -"\003es ~\002is%", "\002it/", "", "\002iv\272", "", -"\002t #\ahttp://C\001x\372", "\002la\211", "\001<\341", "\003, a\224" + "\002s,\266", "\003had\232\002leW", "\003on \216", "", "\001yS", + "\002ma\255\002li\227", "\003or \260", "", "\002ll\230\003s t\277", + "\004fromg\002mel", "", "\003its\332", "\001z\333", "\003ingF", "\001>\336", + "\001 \000\003 (\002nc\344", "\002nd=\003 on\312", + "\002ne\213\003hat\276\003re q", "", "\002ngT\003herz\004have\306\003s o\225", + "", "\003ionk\003s a\254\002ly\352", "\003hisL\003 inN\003 be\252", "", + "\003 fo\325\003 of \003 ha\311", "", "\002of\005", + "\003 co\241\002no\267\003 ma\370", "", "", "\003 cl\356\003enta\003 an7", + "\002ns\300\001\"e", "\003n t\217\002ntP\003s, \205", + "\002pe\320\003 we\351\002om\223", "\002on\037", "", "\002y G", "\003 wa\271", + "\003 re\321\002or*", "", "\002=\"\251\002ot\337", "\003forD\002ou[", + "\003 toR", "\003 th\r", "\003 it\366", + "\003but\261\002ra\202\003 wi\363\002<\346", "\002to\024", "\003arew", "\001d\030", + "\002tr\303", "", "\001\n1\003 a \222", "\003f tv\002veo", "\002un\340", "", + "\003e o\242", "\002a \243\002wa\326\001e\002", "\002ur\226\003e a\274", + "\002us\244\003\n\r\n\247", "\002ut\304\003e c\373", "\002we\221", "", "", + "\002wh\302", "\001f,", "", "", "", "\003d t\206", "", "", "\003th \343", + "\001g;", "", "", "\001\r9\003e s\265", "\003e t\234", "", "\003to Y", + "\003e\r\n\236", "\002d \036\001h\022", "", "\001,Q", "\002 a\031", "\002 b^", + "\002\r\n\025\002 cI", "\002 d\245", "\002 e\253", "\002 fh\001i\b\002e \v", + "", "\002 hU\001-\314", "\002 i8", "", "", "\002 l\315", "\002 m{", + "\002f :\002 n\354", "\002 o\035", "\002 p}\001.n\003\r\n\r\250", "", + "\002 r\275", "\002 s>", "\002 t\016", "", "\002g \235\005which+\003whi\367", + "\002 w5", "\001/\305", "\003as \214", "\003at \207", "", "\003who\331", "", + "\001l\026\002h \212", "", "\002, $", "", "\004withV", "", "", "", "\001m-", "", + "", "\002ac\357", "\002ad\350", "\003TheH", "", "", "\004this\233\001n\t", + "", "\002. y", "", "\002alX\003e, \365", "\003tio\215\002be\\", + "\002an\032\003ver\347", "", "\004that0\003tha\313\001o\006", "\003was2", + "\002arO", "\002as.", "\002at'\003the\001\004they\200\005there\322\005theird", + "\002ce\210", "\004were]", "", "\002ch\231\002l \264\001p<", "", "", + "\003one\256", "", "\003he \023\002dej", "\003ter\270", "\002cou", "", + "\002by\177\002di\201\002eax", "", "\002ec\327", "\002edB", "\002ee\353", "", + "", "\001r\f\002n )", "", "", "", "\002el\262", "", "\003in i\002en3", "", + "\002o `\001s\n", "", "\002er\033", "\003is t\002es6", "", "\002ge\371", + "\004.com\375", "\002fo\334\003our\330", "\003ch \301\001t\003", "\002hab", "", + "\003men\374", "", "\002he\020", "", "", "\001u&", "\002hif", "", + "\003not\204\002ic\203", "\003ed @\002id\355", "", "", "\002ho\273", + "\002r K\001vm", "", "", "", "\003t t\257\002il\360", "\002im\342", + "\003en \317\002in\017", "\002io\220", "\002s \027\001wA", "", "\003er |", + "\003es ~\002is%", "\002it/", "", "\002iv\272", "", + "\002t #\ahttp://C\001x\372", "\002la\211", "\001<\341", "\003, a\224" }; /* Reverse compression codebook, used for decompression */ static char *Smaz_rcb[254] = { -" ", "the", "e", "t", "a", "of", "o", "and", "i", "n", "s", "e ", "r", " th", -" t", "in", "he", "th", "h", "he ", "to", "\r\n", "l", "s ", "d", " a", "an", -"er", "c", " o", "d ", "on", " of", "re", "of ", "t ", ", ", "is", "u", "at", -" ", "n ", "or", "which", "f", "m", "as", "it", "that", "\n", "was", "en", -" ", " w", "es", " an", " i", "\r", "f ", "g", "p", "nd", " s", "nd ", "ed ", -"w", "ed", "http://", "for", "te", "ing", "y ", "The", " c", "ti", "r ", "his", -"st", " in", "ar", "nt", ",", " to", "y", "ng", " h", "with", "le", "al", "to ", -"b", "ou", "be", "were", " b", "se", "o ", "ent", "ha", "ng ", "their", "\"", -"hi", "from", " f", "in ", "de", "ion", "me", "v", ".", "ve", "all", "re ", -"ri", "ro", "is ", "co", "f t", "are", "ea", ". ", "her", " m", "er ", " p", -"es ", "by", "they", "di", "ra", "ic", "not", "s, ", "d t", "at ", "ce", "la", -"h ", "ne", "as ", "tio", "on ", "n t", "io", "we", " a ", "om", ", a", "s o", -"ur", "li", "ll", "ch", "had", "this", "e t", "g ", "e\r\n", " wh", "ere", -" co", "e o", "a ", "us", " d", "ss", "\n\r\n", "\r\n\r", "=\"", " be", " e", -"s a", "ma", "one", "t t", "or ", "but", "el", "so", "l ", "e s", "s,", "no", -"ter", " wa", "iv", "ho", "e a", " r", "hat", "s t", "ns", "ch ", "wh", "tr", -"ut", "/", "have", "ly ", "ta", " ha", " on", "tha", "-", " l", "ati", "en ", -"pe", " re", "there", "ass", "si", " fo", "wa", "ec", "our", "who", "its", "z", -"fo", "rs", ">", "ot", "un", "<", "im", "th ", "nc", "ate", "><", "ver", "ad", -" we", "ly", "ee", " n", "id", " cl", "ac", "il", "", "ot", "un", "<", "im", "th ", "nc", "ate", "><", "ver", "ad", + " we", "ly", "ee", " n", "id", " cl", "ac", "il", " +#include +#include +#include +#include "smaz.h" + +#define MAXSIZE 4096 + +void usage() +{ + printf("Options: \n"); + printf(" -c compress\n"); + printf(" -d decompress\n"); + printf(" -h show this page\n"); + printf(" --help same as -h\n"); +} + +int main(int argc, char const *argv[]) +{ + if (argc < 4 && argv[1] == NULL) + { + fprintf(stderr, "Usage: %s options infile outfile\n", argv[0]); + usage(); + exit(EXIT_FAILURE); + } + + else if (strncmp(argv[1], "--help", 6) == 0 || strncmp(argv[1], "-h", 2) == 0) + { + + printf("Usage: %s options infile outfile\n", argv[0]); + usage(); + exit(EXIT_SUCCESS); + } + + else if (argc < 4) + { + fprintf(stderr, "Usage: %s options infile outfile\n", argv[0]); + usage(); + exit(EXIT_FAILURE); + } + + char in[MAXSIZE]; + char out[MAXSIZE]; + + FILE *fp_in = fopen(argv[2], "rb"); + FILE *fp_out = fopen(argv[3], "wb"); + + int file_size; + int output_size; + + fseek(fp_in, 0, SEEK_END); + file_size = ftell(fp_in); + fseek(fp_in, 0, SEEK_SET); + + fread(in, file_size, 1, fp_in); + + if (strncmp(argv[1], "-c", 2) == 0) + output_size = smaz_compress(in, file_size, out, MAXSIZE); + + else if (strncmp(argv[1], "-d", 2) == 0) + output_size = smaz_decompress(in, file_size, out, MAXSIZE); + + else + { + fprintf(stderr, "[!] Invalid Option: %s\n", argv[1]); + exit(EXIT_FAILURE); + } + + fwrite(out, output_size, 1, fp_out); + + fclose(fp_in); + fclose(fp_out); + return 0; +} \ No newline at end of file