]> git.llucax.com Git - z.facultad/75.06/emufs.git/commitdiff
Se hace un test funcional (y un par de bugfixes).
authorLeandro Lucarella <llucax@gmail.com>
Sun, 11 Apr 2004 06:00:36 +0000 (06:00 +0000)
committerLeandro Lucarella <llucax@gmail.com>
Sun, 11 Apr 2004 06:00:36 +0000 (06:00 +0000)
emufs/idx.c
emufs/tipo1.c
emufs/tipo1_main.c

index 29cdd4bbcf19465116d41cd52c14b80ad5722fb3..144eb995b413980cf28f1bb9bc22d33b6a912360 100644 (file)
@@ -152,7 +152,7 @@ int emufs_idx_agregar(EMUFS *emu, EMUFS_REG_ID n_idreg, EMUFS_BLOCK_ID n_locatio
                
     /* Note: Location = Bloque para Tipo 1 y 3, Offset para Tipo 2 */
     reg.n_idreg = n_idreg;
-               reg.n_location = n_location;
+       reg.n_location = n_location;
        fwrite(&reg,sizeof(EMUFS_IDX),1,f_idx); 
        fclose(f_idx);
        return 0;
index 8cd7e2ccb6fe7c9805aee8a0a76bd1e785210ddb..3a6b294dd6e9c3d9c83e3f65c5719df2fe3fa6da 100644 (file)
@@ -232,7 +232,7 @@ EMUFS_REG_ID emufs_tipo1_grabar_registro(EMUFS* efs, void* reg,
        }
                
        /* actualizo el indice de bloques y registros */
-       *err = emufs_idx_agregar(efs, block_id, reg_id);
+       *err = emufs_idx_agregar(efs, reg_id, block_id);
        if (*err){
                PERR("No se pudo agregar idx");
                return EMUFS_NOT_FOUND;
@@ -310,7 +310,7 @@ int emufs_tipo1_borrar_registro(EMUFS *emu, EMUFS_REG_ID id_reg,
 
 int emufs_tipo1_header_jump(FILE* fp)
 {
-       if (fseek(fp, 0l, SEEK_END)) {
+       if (fseek(fp, emufs_tipo1_header_size(), SEEK_CUR)) {
                PERR("No se pudo hacer fseek()");
                return 8; /* EMUFS_ERROR_SEEK_FILE */
        }
index 618032a26012f4858bb1172c3b70c3d434eb6ac7..34b7db5a634acf112224d362ef0824b95980a749 100644 (file)
@@ -2,50 +2,80 @@
 
 int main(int argc, char* argv[]) {
        EMUFS* efs;
+       char reg1[] = "Hola mundo";
+       char reg2[] = "Adiós mundo cruel";
+       char reg3[] = "EMUFS la rompe!";
+       EMUFS_REG_ID id1;
+       EMUFS_REG_ID id2;
+       EMUFS_REG_ID id3;
+       EMUFS_REG_SIZE size;
+       char* reg;
+       int err = 0;
 
-       if (argc < 2) {
-               printf("Faltan argumentos! %s [nombre]\n", argv[0]);
+       if (argc < 3) {
+               printf("Faltan argumentos! %s [nombre] [tamaño de bloque]\n", argv[0]);
                return 1;
        }
 
-       /*
-       efs = emufs_crear(argv[1], T1, 1024, 0);
+       /* Crea emufs */
+       efs = emufs_crear(argv[1], T1, atoi(argv[2]), 0);
        if (!efs) {
                printf("No se pudo crear el EMUFS.\n");
                return 1;
        }
-       if (emufs_idx_agregar(efs, 0, 0)) {
-               printf("No se pudo agregar índice.\n");
-               return 1;
+
+       /* Graba registros */
+       id1 = efs->grabar_registro(efs, reg1, sizeof(reg1), &err);
+       if (err) {
+               printf("No se pudo grabar el registro 1 (%d).\n", err);
+               goto error;
        }
-       if (emufs_idx_agregar(efs, 0, 1)) {
-               printf("No se pudo agregar índice.\n");
-               return 1;
+       printf("Se grabó el registro 1 (size: %u) con el id %lu.\n", sizeof(reg1), id1);
+
+       id2 = efs->grabar_registro(efs, reg2, sizeof(reg2), &err);
+       if (err) {
+               printf("No se pudo grabar el registro 2 (%d).\n", err);
+               goto error;
        }
-       return 0;
+       printf("Se grabó el registro 2 (size: %u) con el id %lu.\n", sizeof(reg2), id2);
 
-       efs = emufs_abrir(argv[1]);
-       if (!efs) {
-               printf("No se pudo abrir el EMUFS.\n");
-               return 1;
+       id3 = efs->grabar_registro(efs, reg3, sizeof(reg3), &err);
+       if (err) {
+               printf("No se pudo grabar el registro 3 (%d).\n", err);
+               goto error;
        }
+       printf("Se grabó el registro 3 (size: %u) con el id %lu.\n", sizeof(reg3), id3);
 
-       if (!efs->leer_registro(efs, 0, registro1) == -1) {
-               printf("No se pudo leer el registro 1.\n");
-               return 1;
+       /* Lee registros */
+       reg = efs->leer_registro(efs, id1, &size, &err);
+       if (err) {
+               printf("No se pudo leer el registro 1 (%d).\n", err);
+               goto error;
        }
-       registro1[4] = '\0';
-       printf("Registro 1: %s\n", registro1);
+       printf("El contenido del registro 1 es: '%s'.\n", reg);
+       free(reg);
 
-       /*
-       if (efs->leer_registro(efs, 1, registro2, 5) == -1) {
-               printf("No se pudo leer el registro 2.\n");
-               return 1;
+       reg = efs->leer_registro(efs, id2, &size, &err);
+       if (err) {
+               printf("No se pudo leer el registro 2 (%d).\n", err);
+               goto error;
+       }
+       printf("El contenido del registro 2 es: '%s'.\n", reg);
+       free(reg);
+
+       reg = efs->leer_registro(efs, id3, &size, &err);
+       if (err) {
+               printf("No se pudo leer el registro 3 (%d).\n", err);
+               goto error;
        }
-       registro2[5] = '\0';
-       printf("Registro 2: %s\n", registro2);
-       */
+       printf("El contenido del registro 3 es: '%s'.\n", reg);
+       free(reg);
 
-       /*emufs_destruir(efs);*/
+       emufs_destruir(efs);
        return 0;
+
+error:
+       emufs_destruir(efs);
+       return 2;
+
 }