]> git.llucax.com Git - z.facultad/75.06/emufs.git/commitdiff
* BUGFIX : inicializo una variabla en buscar_lugar para que el resultado sea correcto.
authorRicardo Markiewicz <gazer.arg@gmail.com>
Mon, 5 Apr 2004 03:21:26 +0000 (03:21 +0000)
committerRicardo Markiewicz <gazer.arg@gmail.com>
Mon, 5 Apr 2004 03:21:26 +0000 (03:21 +0000)
 * Ya hay un demo que guarda algo en un archivo. Falta verificar el resultado.

tipo3/emufs.c
tipo3/main.c
tipo3/param_cte.c

index b55948967628b0699b7122cbc102bc6f3034bb19..a06ad13015063c9a2c0318a624e447e6f6d46760 100644 (file)
@@ -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);
index b6e0579c2bec87d56ec17f0a75a60c75de386dc2..4858f37f2e470c7ff88388b8db51a164f7ebb6c1 100644 (file)
@@ -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;
index 70a10516c2e3156f7e19de73c861512094046995..e0786fe13b2733272959d7e9c52899415c1f442d 100644 (file)
@@ -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(&reg,sizeof(reg),1,f_block_free);
                if ( reg.free_space >= tam )