]> git.llucax.com Git - z.facultad/75.06/jacu.git/blobdiff - src/mtf/mtf.c
Cambios minimos, no se si entraran en la impresion :(
[z.facultad/75.06/jacu.git] / src / mtf / mtf.c
index 92088c06e7530d02e73ae1d450290e50001a5d37..4f69bc92d0f0c5216bc9a2ef14eff62f209c0935 100644 (file)
@@ -1,3 +1,24 @@
+/*----------------------------------------------------------------------------
+ *                   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*****/
@@ -16,26 +37,27 @@ void print_z(char *z, int len)
        fprintf(stderr, "\n");
 }
 
-char *jacu_mtf(char *datos, int len, char **_z, int *z_len)
+unsigned char *jacu_mtf(unsigned char *datos, int len, unsigned char **_z, int *z_len)
 {
-       char *z;
-       char *pos;
+       unsigned char *z;
+       unsigned char *pos;
        int i, size;
        
-       pos = (char *)malloc(len*sizeof(char));
+       pos = (unsigned char *)malloc(len*sizeof(unsigned char));
        z = jacu_buscar_z(datos, len, &size);
-       *_z = (char*)malloc(len*sizeof(char));
-       memcpy(*_z, z, len*sizeof(char));
+       *_z = (unsigned char*)malloc(size*sizeof(unsigned char));
+       memcpy(*_z, z, size*sizeof(unsigned char));
        for(i=0; i<len; i++){
                pos[i] = get_pos(z, size, datos[i]);
                if (pos[i] != 0) 
                        pop_front(z, pos[i]);
        }
        (*z_len) = size;
+       free(z);
        return pos;
 }
 
-char *jacu_mtf_inv(char *z, unsigned char *pos, int len)
+unsigned char *jacu_mtf_inv(unsigned char *z, unsigned char *pos, int len)
 {
        char *datos;
        int i;
@@ -49,7 +71,7 @@ char *jacu_mtf_inv(char *z, unsigned char *pos, int len)
        return datos;
 }
 
-char *jacu_buscar_z(char* datos, int len, int *size)
+unsigned char *jacu_buscar_z(unsigned char* datos, int len, int *size)
 {
        char *z;
        int i, j=0;
@@ -71,7 +93,6 @@ int no_pertenece(char *z, char c, int len)
 {
        int i;
        
-       /* XXX Z NO TIENE 255 POSICIONES XXX */
        for(i=0; i<len; i++)
                if (z[i] == c)
                        return 0;