X-Git-Url: https://git.llucax.com/z.facultad/75.06/emufs.git/blobdiff_plain/e91ddc0dd6ef80281e4120ed01fff9123ee095c3..3719f9bdbbeb0b8573b5887edc0aa2c9e835760a:/emufs/tipo1_main.c diff --git a/emufs/tipo1_main.c b/emufs/tipo1_main.c index 618032a..f50456e 100644 --- a/emufs/tipo1_main.c +++ b/emufs/tipo1_main.c @@ -1,51 +1,166 @@ +/* vim: set noexpandtab tabstop=4 shiftwidth=4: + *---------------------------------------------------------------------------- + * emufs + *---------------------------------------------------------------------------- + * This file is part of emufs. + * + * emufs is free software; you can redistribute it and/or modify it under the + * terms of the GNU General Public License as published by the Free Software + * Foundation; either version 2 of the License, or (at your option) any later + * version. + * + * emufs is distributed in the hope that it will be useful, but WITHOUT ANY + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along + * with emufs; if not, write to the Free Software Foundation, Inc., 59 Temple + * Place, Suite 330, Boston, MA 02111-1307 USA + *---------------------------------------------------------------------------- + * Creado: dom abr 11 03:06:48 ART 2004 + * Autores: Leandro Lucarella + *---------------------------------------------------------------------------- + * + * $Id$ + * + */ + +/** \file + * + * Prueba de archivo \ref tipo3.h "tipo3". + * + */ + #include "emufs.h" 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 out; } - 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 out; } - 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 out; } + 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 out; } - 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 out; } - registro2[5] = '\0'; - printf("Registro 2: %s\n", registro2); - */ + 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 out; + } + printf("El contenido del registro 3 es: '%s'.\n", reg); + free(reg); + + /* Ve archivos auxiliares */ + printf("\nArchivos auxiliares:\n\n"); + ver_archivo_FS(efs); + printf("\n--------------------------------------------------\n\n"); + + /* Borra registro */ + err = efs->borrar_registro(efs, id2); + if (err) { + printf("No se pudo borrar el registro 2 (%d).\n", err); + goto out; + } + printf("Registro 2 (id = %lu) borrado!.\n", id2); + + /* Lee registro 3 (desplazado a izquierda) */ + reg = efs->leer_registro(efs, id3, &size, &err); + if (err) { + printf("No se pudo leer el registro 3 (%d).\n", err); + goto out; + } + printf("El contenido del registro 3 es: '%s'.\n", reg); + free(reg); + + /* Ve archivos auxiliares */ + printf("\n--------------------------------------------------\n"); + printf("Archivos auxiliares:\n\n"); + ver_archivo_FS(efs); + + /* compacta archivo */ + printf("\n--------------------------------------------------\n"); + printf("Compactando archivo.......\n\n"); + efs->compactar(efs); + + /* Ve archivos auxiliares */ + printf("Archivos auxiliares:\n\n"); + ver_archivo_FS(efs); + printf("\n--------------------------------------------------\n"); + + /* Lee registros */ + reg = efs->leer_registro(efs, id1, &size, &err); + if (err) { + printf("No se pudo leer el registro 1 (%d).\n", err); + goto out; + } + printf("El contenido del registro 1 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 out; + } + printf("El contenido del registro 3 es: '%s'.\n", reg); + free(reg); + +out: + emufs_destruir(efs); + return err; - /*emufs_destruir(efs);*/ - return 0; }