]> git.llucax.com Git - z.facultad/75.06/emufs.git/commitdiff
* Ajusto gui a las nuevas funciones
authorRicardo Markiewicz <gazer.arg@gmail.com>
Sat, 10 Apr 2004 23:15:26 +0000 (23:15 +0000)
committerRicardo Markiewicz <gazer.arg@gmail.com>
Sat, 10 Apr 2004 23:15:26 +0000 (23:15 +0000)
* Arreglo un bug en leer_registro de tipo3 que no me estaba dando el tamaƱo del registro leido

emufs/emufs.c
emufs/idx.c
emufs/tipo3.c
emufs_gui/articulos.c

index de97f219409fa58d5596ea5d4f322f929bd481b7..6425abdde898f48d54d72eba916cdc0e2c5518d9 100644 (file)
@@ -48,7 +48,6 @@
 
 char *str_dup(const char *s);
 
-/* Duplica una cadena de caracteres y devuelve la copia.  */
 char *str_dup(const char *s)
 {
        char *tmp;
@@ -58,7 +57,6 @@ char *str_dup(const char *s)
        return tmp;
 }
 
-/* Objetivo: Crea un archivo de nombre y extension dadas. */
 int emufs_crear_archivo_auxiliar(const char* name, const char* ext)
 {
        FILE* f;
@@ -81,9 +79,7 @@ int emufs_crear_archivo_auxiliar(const char* name, const char* ext)
        return 0;
 }
 
-/* Crea un archivo de tipo dado y devuelve una estructura con las rutinas de handling de dicho archivo. */
-EMUFS *emufs_crear(const char *filename, EMUFS_TYPE tipo,
-               EMUFS_BLOCK_SIZE tam_bloque, EMUFS_REG_SIZE tam_reg)
+EMUFS *emufs_crear(const char *filename, EMUFS_TYPE tipo, EMUFS_BLOCK_SIZE tam_bloque, EMUFS_REG_SIZE tam_reg)
 {
        char name[255];
        FILE *fp;
@@ -179,7 +175,6 @@ EMUFS *emufs_crear(const char *filename, EMUFS_TYPE tipo,
        return efs;
 }
 
-/* Realiza la apertura de un archivo dado, identifica el tipo de archivo y devuelve la estructura de handling. */
 EMUFS *emufs_abrir(const char *filename)
 {
        EMUFS *efs;
@@ -243,7 +238,6 @@ EMUFS *emufs_abrir(const char *filename)
        return efs;
 }
 
-/* Objetivo: Rutina llamada al destruir la aplicacion para librerar  */
 int emufs_destruir(EMUFS *e)
 {
        if (e == NULL) return 1;
@@ -252,7 +246,6 @@ int emufs_destruir(EMUFS *e)
        return 0;
 }
 
-/* Visualiza espacios libres de un archivo?? */
 int ver_archivo_FS(EMUFS *emu)
 {
        FILE *f_block_free;
index fcfc5bab77b5242801e72dc10a52d190e6924048..94eb73c4891401c10ec68de54e40f821daa9ba50 100644 (file)
@@ -159,7 +159,6 @@ int emufs_idx_borrar(EMUFS *emu, EMUFS_REG_ID n_IdReg)
                /*busco cual tengo que borrar*/
                if ( fread(&reg, sizeof(EMUFS_IDX), 1, f_idx) != 1 ) continue;
                if ( reg.n_idreg == n_IdReg ){
-                       printf("el registro que se quiere borrar es : %ld   num_reg = %d\n", ftell(f_idx)/sizeof(EMUFS_IDX)-1, n_IdReg );
                        break;
                }
        }
@@ -173,14 +172,14 @@ int emufs_idx_borrar(EMUFS *emu, EMUFS_REG_ID n_IdReg)
        /*calculo cuantos registros tengo que mover */
        cant = (final-actual)/sizeof(EMUFS_IDX);
        buffer = (EMUFS_IDX*)malloc((cant)*sizeof(EMUFS_IDX));
-       printf("sizeof buffer = %d\n",(cant-1)*sizeof(EMUFS_IDX));
+       printf("sizeof buffer = %ld\n",(cant-1)*sizeof(EMUFS_IDX));
        /*apunto al siguiente del que quiero borrar*/
        final = actual + sizeof(EMUFS_IDX);
        /*leo todos los que quedan*/
        fseek(f_idx,final,SEEK_SET);
-       while ( fread(buffer,sizeof(EMUFS_IDX),cant-1,f_idx) ;
+       while ( fread(buffer,sizeof(EMUFS_IDX),cant-1,f_idx)) ;
                for( i=0; i<cant; i += sizeof(unsigned long int))
-               printf("buffer[%d] = %d     %d\n",i/sizeof(unsigned long int),*(buffer+i),*(buffer+2*i));
+               printf("buffer[%ld] = %d     %d\n",i/sizeof(unsigned long int),*(buffer+i),*(buffer+2*i));
        /*apunto al lugar donde deben ser guardados*/
        fseek(f_idx,actual,SEEK_SET);
        /*los guardo*/
@@ -189,8 +188,8 @@ int emufs_idx_borrar(EMUFS *emu, EMUFS_REG_ID n_IdReg)
 
        fseek (f_idx,0,SEEK_END);
        tam = ftell(f_idx);
-       ftruncate(f_idx, tam - sizeof(EMUFS_IDX));
        fclose(f_idx);
+       truncate(name_f_idx, tam - sizeof(EMUFS_IDX));
 
        return 0;
 }
index 4971f5e8452ad3bf0b03413b3b7ed2e0bafd59ef..b9dc8b772f5878c2554160a6bf7e85e15c3538bf 100644 (file)
@@ -76,6 +76,7 @@ void* emufs_tipo3_leer_registro(EMUFS *emu, EMUFS_REG_ID ID, int* err)
        }
        
        free(bloque);
+       (*err) = emu->tam_reg;
        return registro;
 }
 
index 537d051750548fc49b096807909e0e805375ffe7..ca82c02afb58555bb0b98c3d4e83d28277ea0d21 100644 (file)
@@ -106,7 +106,8 @@ t_Articulo *art_obtener(t_LstArticulos *lst, const char *numero)
 {
        /* FIXME : NO ME GUSTA :-/ */
        t_Articulo *art;
-       int i;
+       void *tmp;
+       int i,size;
        int n = atoi(numero);
 
        if (lst == NULL) lst = lst_articulos;
@@ -115,7 +116,17 @@ t_Articulo *art_obtener(t_LstArticulos *lst, const char *numero)
                if (n == lst->array[i].numero) {
                        art = (t_Articulo *)malloc(sizeof(t_Articulo));
                        /* Ya se cual tengo que retornar. Ahora veo si lo cargo desde el archivo */
-                       lst->fp->leer_registro(lst->fp, lst->array[i].num_reg, art);
+                       tmp = lst->fp->leer_registro(lst->fp, lst->array[i].num_reg, &size);
+                       if (tmp == NULL) {
+                               return NULL;
+                       }
+                       if (size == sizeof(t_Articulo)) {
+                               memcpy(art, tmp, sizeof(t_Articulo));
+                       } else {
+                               free(art);
+                               art = NULL;
+                       }
+                       free(tmp);
                        return art;
                }
        }