]> git.llucax.com Git - z.facultad/75.06/emufs.git/blobdiff - emufs/tipo1_main.c
* BUGFIX : estaba mal el modo de apertura del archivo.
[z.facultad/75.06/emufs.git] / emufs / tipo1_main.c
index 618032a26012f4858bb1172c3b70c3d434eb6ac7..f50456eb54e942aebb6fe9b34df07a67e388a8b9 100644 (file)
+/* 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 <llucare@fi.uba.ar>
+ *----------------------------------------------------------------------------
+ *
+ * $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;
 }