]> git.llucax.com Git - z.facultad/75.06/emufs.git/blobdiff - tipo3/param_cte.c
* Agrego un par de comentarios al codigo para guiar a Nico
[z.facultad/75.06/emufs.git] / tipo3 / param_cte.c
index 1042929e031f19592af0b6053b823e572bd39399..918dbcd1387d57e737a5e99a7727eda5e893f4e5 100644 (file)
@@ -9,10 +9,17 @@ FILE* reg_exist;
 /** Leo un registro del archivo, devuelve cero si no lo encuentra.**/
 int leer_registro(int ID, void *str, unsigned long tam)
 {
-       struct t_param_cte dato;
+       /* FIXME : aca tam es el tamaño del registro, no del bloque!
+        *
+        * Aca deberias recibir una estructura EMUFS y de ahi sacar los datos
+        * del tamaño del bloque a leer.
+        *
+        * leer_registro(EMUFS, int,  void*,  unsigned long);
+        * 
+        * Tambien ver que siempre que hay un return se libere toda la memoria!
+        */
        char* bloque = (char*)malloc(tam);
-       char ID_char[4];
-       int block, i, ID_aux, a, b, c, d;
+       int block, ID_aux, a, b, c, d, tamanio_registro;
        int iterador = 0;
        /* tengo que crear los archivos de indice antes de usarlos!!!!!!!!!*/
        if ( (block_reg = fopen("block_reg.dat","a+")) == NULL )
@@ -31,17 +38,25 @@ int leer_registro(int ID, void *str, unsigned long tam)
        if (leer_bloque(block,bloque,tam)==-1) 
                return -1; /*No se pudo leer el bloque*/
        
-       while ( iterador != (tam/sizeof(dato)) ){
+       while ( iterador != (tam/tamanio_registro) ){
                a = bloque[0+iterador];
                b = bloque[1+iterador];
                c = bloque[2+iterador];
                d = bloque[3+iterador];
                ID_aux = (d << 0 ) | (c << 8) |  ( b << 16) | (a << 24);
                if ( ID_aux == ID ){
-                               copiar(dato, &str);
+                               /* TODO : la copia es byte a byte. Al archivo
+                                * no le importa que tipo de estructura es
+                                */
+                               //aca va el memcpy... HACER!!
+                               //copiar(dato, &str);
                                break;
                        }
-               iterador += sizeof(dato);       
+               // FIXME : El tamaño del registro es lo que debo tener
+               // aca, no el tamaño del tipo de dato.
+               //
+               // Cuando se crea el archivo se le da el tamaño de un registro
+               iterador += tamanio_registro;   
        }               
        fclose(block_reg);              
        fclose(block_free);
@@ -59,7 +74,7 @@ int existe_registro(int ID)
        char ex;
        if ( (reg_exist = fopen("reg_exist.dat","r")) == NULL) return 0; /*ERROR*/
        while ( !feof(reg_exist) ){
-               fscanf(reg_exist,"%i%c",num,ex);
+               fscanf(reg_exist,"%i%c",&num,&ex);
                if ( num == ID && ex == 'S' ){
                        fclose(reg_exist);
                        return 0;
@@ -77,7 +92,7 @@ int buscar_registro(int ID)
        int num_block, num_reg; 
        if ( (block_reg = fopen("block_reg.dat","r")) == NULL) return 0; /*ERROR*/
        while ( !feof(block_reg) ){
-               fscanf(block_reg,"%i%i",num_block,num_reg);
+               fscanf(block_reg,"%i%i",&num_block,&num_reg);
                if ( num_reg == ID ){
                        fclose(block_reg);
                        return num_block;
@@ -88,25 +103,7 @@ int buscar_registro(int ID)
        return -1;
 }
 
-int copiar(struct t_param_cte dato, void** str)
-{
-       if (str == NULL) return 0;
-       str->ID == dato.ID;     
-       strcpy(str->num_fac,dato.num_fac);
-       strcpy(str->fecha_emision,dato.fecha_emision);
-       strcpy(str->fecha_vto,dato.fecha_vto);
-       strcpy(str->num_fac,dato.num_fac);
-       strcpy(str->num_remito,dato.num_remito);
-       strcpy(str->estado,dato.estado);
-       strcpy(str->FP,dato.FP);
-       strcpy(str->Por_DoI,dato.Por_DoI);
-       strcpy(str->num_cta_cte,dato.num_cta_cte);
-       strcpy(str->num_cheque,dato.num_cheque);
-       str->texto = dato.texto;
-       return 1;
-}
-       
 int leer_bloque(int ID, void* str, unsigned long tam)
 {
-       
+       return 0;
 }