X-Git-Url: https://git.llucax.com/z.facultad/75.06/jacu.git/blobdiff_plain/de5da6745aa448b96eee01fbd9df0575629678b9..HEAD:/src/mtf/mtf.c?ds=inline diff --git a/src/mtf/mtf.c b/src/mtf/mtf.c index 3113161..4f69bc9 100644 --- a/src/mtf/mtf.c +++ b/src/mtf/mtf.c @@ -1,9 +1,30 @@ +/*---------------------------------------------------------------------------- + * jacu - Just Another Compression Utility + *---------------------------------------------------------------------------- + * 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 + *---------------------------------------------------------------------------- + */ + #include "mtf.h" /****privadas*****/ int no_pertenece(char *z, char c, int len); -void pop_front(char *z, int pos); +void pop_front(char *z, unsigned int pos); int get_pos(char *z, int len, char c); /****fin privadas******/ @@ -16,24 +37,41 @@ void print_z(char *z, int len) fprintf(stderr, "\n"); } -int *jacu_mtf(char *datos, int len) +unsigned char *jacu_mtf(unsigned char *datos, int len, unsigned char **_z, int *z_len) { - char *z; - int *pos; + unsigned char *z; + unsigned char *pos; int i, size; - pos = (int*)malloc(len*sizeof(int)); + pos = (unsigned char *)malloc(len*sizeof(unsigned char)); z = jacu_buscar_z(datos, len, &size); + *_z = (unsigned char*)malloc(size*sizeof(unsigned char)); + memcpy(*_z, z, size*sizeof(unsigned char)); for(i=0; i 255) printf("pos > = %u\n", pos); + if (pos < 0u) printf("pos < = %d\n", pos); aux = z[pos]; for(i=pos; i>0; i--) z[i]=z[i-1];