From 51e6445c33baeba7393fe85bb1a33ba4cad9272b Mon Sep 17 00:00:00 2001 From: Ricardo Markiewicz Date: Sun, 20 Jun 2004 19:44:50 +0000 Subject: [PATCH 1/1] Inicio para jacu main program --- src/Makefile | 57 ++++++++++++++++++++++++++++++++++++ src/main.c | 83 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 140 insertions(+) create mode 100644 src/Makefile create mode 100644 src/main.c diff --git a/src/Makefile b/src/Makefile new file mode 100644 index 0000000..e8f2b88 --- /dev/null +++ b/src/Makefile @@ -0,0 +1,57 @@ +#---------------------------------------------------------------------------- +# jacu +#---------------------------------------------------------------------------- +# This file is part of jacu. +# +# jacu is free software; you can redistribute it and/or modify it under the +# terms of the GNU General Public License as published by the Free Software +# Foundation; either version 2 of the License, or (at your option) any later +# version. +# +# jacu is distributed in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more +# details. +# +# You should have received a copy of the GNU General Public License along +# with jacu; if not, write to the Free Software Foundation, Inc., 59 Temple +# Place, Suite 330, Boston, MA 02111-1307 USA +#---------------------------------------------------------------------------- +# Creado: jue jun 17 00:41:52 ART 2004 +# Autores: Leandro Lucarella +#---------------------------------------------------------------------------- +# +# $Id: bufford.c 624 2004-05-30 20:18:04Z llucare $ +# + +TARGETS=jacu +COMMON= +SRCS=main.c + +#CFLAGS=-O3 -Wall -DNDEBUG +CFLAGS=-ggdb -Wall -DDEBUG + +all: $(TARGETS) + +jacu: $(COMMON) main.o + +depend: + makedepend -- $(CFLAGS) -- $(SRCS) + +clean: + @$(RM) -f *.o $(TARGETS) + +.PHONY: all clean depend + +# DO NOT DELETE + +main.o: statichuff/statichuff.h /usr/include/stdio.h /usr/include/features.h +main.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h +main.o: /usr/include/bits/types.h /usr/include/bits/wordsize.h +main.o: /usr/include/bits/typesizes.h /usr/include/libio.h +main.o: /usr/include/_G_config.h /usr/include/wchar.h +main.o: /usr/include/bits/wchar.h /usr/include/gconv.h +main.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h +main.o: /usr/include/unistd.h /usr/include/bits/posix_opt.h +main.o: /usr/include/bits/confname.h blocksorting/bs.h /usr/include/string.h +main.o: /usr/include/stdlib.h mtf/mtf.h diff --git a/src/main.c b/src/main.c new file mode 100644 index 0000000..711374c --- /dev/null +++ b/src/main.c @@ -0,0 +1,83 @@ + +#include "statichuff/statichuff.h" +#include "blocksorting/bs.h" +#include "mtf/mtf.h" +#include +#include +#include + +int main(int argc, char* argv[]) +{ + int cflag = 0; + int dflag = 0; + int tflag = 0; + long int volumesize = 0; + int ch; + t_BlockSort *bs; + + while ((ch = getopt(argc, argv, "cdt:")) != -1) { + + switch (ch) { + case 'c': cflag = 1; + break; + + case 'd': dflag = 1; + break; + + case 't': tflag = 1; + volumesize = atoi(optarg); + break; + + default: fprintf(stderr, "Usage: %s [-cdt] sourcefile targetfile\n", argv[0]); + return(2); + } + } + + if ( (argc == 1) || (cflag & dflag) || !(cflag | dflag) || ((argc - optind) < 2) ) { + fprintf(stderr, "Usage: %s [-cdt] sourcefile targetfile\n", argv[0]); + if ((tflag == 1) && (volumesize <= 0)) fprintf(stderr,"Error: The volume size must be a non-zero value\n"); + return (2); + } + + if (cflag == 1) { + /* Comprimo */ + /* No me gusta el tmpfile ... es para probar como anda todo junto */ + FILE *fp, *fp_out; + unsigned long int len, i, j, total, k; + int *mtf; + char *salida, *data, c; + len = 4096; + data = malloc(sizeof(char)*len); + salida = malloc(sizeof(char)*(len)); + bs = bs_create(len); + fp = fopen(argv[optind], "rb"); + fp_out = fopen("tmp.comp", "wb"); + c = fgetc(fp); + total = 0; + while (!feof(fp)) { + i = 0; + while ((!feof(fp)) && (i < len)) { + data[i++] = c; + c = fgetc(fp); + total++; + } + /* Hago el BS */ + bs_solve(data, salida, bs, &k, i); + /* Le aplico el MTF */ + mtf = jacu_mtf(salida, i); + for(j=0; j