From: Ricardo Markiewicz Date: Sat, 10 Apr 2004 23:15:26 +0000 (+0000) Subject: * Ajusto gui a las nuevas funciones X-Git-Tag: svn_import_r684~570 X-Git-Url: https://git.llucax.com/z.facultad/75.06/emufs.git/commitdiff_plain/cba7ac4355bfc8feadd6490a253e9e4466ed5f8c?ds=sidebyside * Ajusto gui a las nuevas funciones * Arreglo un bug en leer_registro de tipo3 que no me estaba dando el tamaƱo del registro leido --- diff --git a/emufs/emufs.c b/emufs/emufs.c index de97f21..6425abd 100644 --- a/emufs/emufs.c +++ b/emufs/emufs.c @@ -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; diff --git a/emufs/idx.c b/emufs/idx.c index fcfc5ba..94eb73c 100644 --- a/emufs/idx.c +++ b/emufs/idx.c @@ -159,7 +159,6 @@ int emufs_idx_borrar(EMUFS *emu, EMUFS_REG_ID n_IdReg) /*busco cual tengo que borrar*/ if ( fread(®, 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; itam_reg; return registro; } diff --git a/emufs_gui/articulos.c b/emufs_gui/articulos.c index 537d051..ca82c02 100644 --- a/emufs_gui/articulos.c +++ b/emufs_gui/articulos.c @@ -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; } }