From 03906f9085993640c8cccdd07574d9b9c71209a0 Mon Sep 17 00:00:00 2001 From: Ricardo Markiewicz Date: Mon, 5 Apr 2004 03:21:26 +0000 Subject: [PATCH] * BUGFIX : inicializo una variabla en buscar_lugar para que el resultado sea correcto. * Ya hay un demo que guarda algo en un archivo. Falta verificar el resultado. --- tipo3/emufs.c | 16 ++++++++++++++++ tipo3/main.c | 2 +- tipo3/param_cte.c | 7 ++++++- 3 files changed, 23 insertions(+), 2 deletions(-) diff --git a/tipo3/emufs.c b/tipo3/emufs.c index b559489..a06ad13 100644 --- a/tipo3/emufs.c +++ b/tipo3/emufs.c @@ -6,6 +6,7 @@ #define EXT_TIPO3_ID ".id3" #define EXT_TIPO3_DATA ".dat" #define EXT_TIPO3_DISP ".fsc" +#define EXT_TIPO3_IDS ".idc" char *str_dup(const char *s) { @@ -50,6 +51,21 @@ EMUFS *emufs_crear(const char *filename, char tipo, unsigned int tam_bloque, uns fwrite(&tam_bloque, sizeof(unsigned int), 1, fp); fwrite(&tam_reg, sizeof(unsigned int), 1, fp); fclose(fp); + + strcpy(name, filename); + strcat(name, EXT_TIPO3_ID); + fp = fopen(name, "w"); + fclose(fp); + + strcpy(name, filename); + strcat(name, EXT_TIPO3_DISP); + fp = fopen(name, "w"); + fclose(fp); + + strcpy(name, filename); + strcat(name, EXT_TIPO3_IDS); + fp = fopen(name, "w"); + fclose(fp); break; default: free(tmp); diff --git a/tipo3/main.c b/tipo3/main.c index b6e0579..4858f37 100644 --- a/tipo3/main.c +++ b/tipo3/main.c @@ -9,7 +9,7 @@ int main() fp = emufs_crear("articulos", T3, 512, 100); - fp->grabar_registro(fp, a, strlen(a)+1); + printf("ID = %d\n", fp->grabar_registro(fp, a, strlen(a)+1)); emufs_destruir(fp); return 0; diff --git a/tipo3/param_cte.c b/tipo3/param_cte.c index 70a1051..e0786fe 100644 --- a/tipo3/param_cte.c +++ b/tipo3/param_cte.c @@ -135,6 +135,7 @@ int grabar_registro(EMUFS *emu, void *ptr, unsigned long tam) /* me devuelve el ID del bloque donde quepa un registro y el espacio libre en "fs"*/ num_bloque = buscar_lugar(emu, tam, &fs); /*si no hay bloques con suficiente espacio creo un bloque nuevo */ + printf("num_bloque = %d\n", num_bloque); if (num_bloque == -1) { /*crear un nuevo bloque en memoria */ bloque = (char*)malloc(emu->tam_bloque); @@ -227,7 +228,11 @@ int buscar_lugar(EMUFS *emu, unsigned long tam, int *fs) strcat(name_f_block_reg,".fsc"); if ( (f_block_free = fopen(name_f_block_reg,"r"))==NULL ) return -1; - + + /* Inicializo la estructura para evitar que si el archivo esta vacio + * el resultado sea correcto + */ + reg.block = -1; while( !feof(f_block_free) ){ fread(®,sizeof(reg),1,f_block_free); if ( reg.free_space >= tam ) -- 2.43.0