From 320e577ead5c73e18dd35120a58da9c01af9df49 Mon Sep 17 00:00:00 2001 From: Leandro Lucarella Date: Sun, 11 Apr 2004 06:00:36 +0000 Subject: [PATCH] Se hace un test funcional (y un par de bugfixes). --- emufs/idx.c | 2 +- emufs/tipo1.c | 4 +-- emufs/tipo1_main.c | 86 +++++++++++++++++++++++++++++++--------------- 3 files changed, 61 insertions(+), 31 deletions(-) diff --git a/emufs/idx.c b/emufs/idx.c index 29cdd4b..144eb99 100644 --- a/emufs/idx.c +++ b/emufs/idx.c @@ -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(®,sizeof(EMUFS_IDX),1,f_idx); fclose(f_idx); return 0; diff --git a/emufs/tipo1.c b/emufs/tipo1.c index 8cd7e2c..3a6b294 100644 --- a/emufs/tipo1.c +++ b/emufs/tipo1.c @@ -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 */ } diff --git a/emufs/tipo1_main.c b/emufs/tipo1_main.c index 618032a..34b7db5 100644 --- a/emufs/tipo1_main.c +++ b/emufs/tipo1_main.c @@ -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; + } -- 2.43.0