]> git.llucax.com Git - z.facultad/75.06/emufs.git/blob - emufs/tipo1_main.c
Primer intento de compactar(). Parece andar bien lo que esta implementado. Falta
[z.facultad/75.06/emufs.git] / emufs / tipo1_main.c
1 /* vim: set noexpandtab tabstop=4 shiftwidth=4:
2  *----------------------------------------------------------------------------
3  *                                  emufs
4  *----------------------------------------------------------------------------
5  * This file is part of emufs.
6  *
7  * emufs is free software; you can redistribute it and/or modify it under the
8  * terms of the GNU General Public License as published by the Free Software
9  * Foundation; either version 2 of the License, or (at your option) any later
10  * version.
11  *
12  * emufs is distributed in the hope that it will be useful, but WITHOUT ANY
13  * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
14  * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
15  * details.
16  *
17  * You should have received a copy of the GNU General Public License along
18  * with emufs; if not, write to the Free Software Foundation, Inc., 59 Temple
19  * Place, Suite 330, Boston, MA  02111-1307  USA
20  *----------------------------------------------------------------------------
21  * Creado:  dom abr 11 03:06:48 ART 2004
22  * Autores: Leandro Lucarella <llucare@fi.uba.ar>
23  *----------------------------------------------------------------------------
24  *
25  * $Id$
26  *
27  */
28
29 /** \file
30  *
31  * Prueba de archivo \ref tipo3.h "tipo3".
32  * 
33  */
34
35 #include "emufs.h"
36
37 int main(int argc, char* argv[]) {
38         EMUFS* efs;
39         char reg1[] = "Hola mundo";
40         char reg2[] = "Adiós mundo cruel";
41         char reg3[] = "EMUFS la rompe!";
42         EMUFS_REG_ID id1;
43         EMUFS_REG_ID id2;
44         EMUFS_REG_ID id3;
45         EMUFS_REG_SIZE size;
46         char* reg;
47         int err = 0;
48
49         if (argc < 3) {
50                 printf("Faltan argumentos! %s [nombre] [tamaño de bloque]\n", argv[0]);
51                 return 1;
52         }
53
54         /* Crea emufs */
55         efs = emufs_crear(argv[1], T1, atoi(argv[2]), 0);
56         if (!efs) {
57                 printf("No se pudo crear el EMUFS.\n");
58                 return 1;
59         }
60
61         /* Graba registros */
62         id1 = efs->grabar_registro(efs, reg1, sizeof(reg1), &err);
63         if (err) {
64                 printf("No se pudo grabar el registro 1 (%d).\n", err);
65                 goto out;
66         }
67         printf("Se grabó el registro 1 (size: %u) con el id %lu.\n", sizeof(reg1), id1);
68
69         id2 = efs->grabar_registro(efs, reg2, sizeof(reg2), &err);
70         if (err) {
71                 printf("No se pudo grabar el registro 2 (%d).\n", err);
72                 goto out;
73         }
74         printf("Se grabó el registro 2 (size: %u) con el id %lu.\n", sizeof(reg2), id2);
75
76         id3 = efs->grabar_registro(efs, reg3, sizeof(reg3), &err);
77         if (err) {
78                 printf("No se pudo grabar el registro 3 (%d).\n", err);
79                 goto out;
80         }
81         printf("Se grabó el registro 3 (size: %u) con el id %lu.\n", sizeof(reg3), id3);
82
83         /* Lee registros */
84         reg = efs->leer_registro(efs, id1, &size, &err);
85         if (err) {
86                 printf("No se pudo leer el registro 1 (%d).\n", err);
87                 goto out;
88         }
89         printf("El contenido del registro 1 es: '%s'.\n", reg);
90         free(reg);
91
92         reg = efs->leer_registro(efs, id2, &size, &err);
93         if (err) {
94                 printf("No se pudo leer el registro 2 (%d).\n", err);
95                 goto out;
96         }
97         printf("El contenido del registro 2 es: '%s'.\n", reg);
98         free(reg);
99
100         reg = efs->leer_registro(efs, id3, &size, &err);
101         if (err) {
102                 printf("No se pudo leer el registro 3 (%d).\n", err);
103                 goto out;
104         }
105         printf("El contenido del registro 3 es: '%s'.\n", reg);
106         free(reg);
107
108         /* Ve archivos auxiliares */
109         printf("\nArchivos auxiliares:\n\n");
110         ver_archivo_FS(efs);
111         printf("\n--------------------------------------------------\n\n");
112
113         /* Borra registro */
114         err = efs->borrar_registro(efs, id2);
115         if (err) {
116                 printf("No se pudo borrar el registro 2 (%d).\n", err);
117                 goto out;
118         }
119         printf("Registro 2 (id = %lu) borrado!.\n", id2);
120
121         /* Lee registro 3 (desplazado a izquierda) */
122         reg = efs->leer_registro(efs, id3, &size, &err);
123         if (err) {
124                 printf("No se pudo leer el registro 3 (%d).\n", err);
125                 goto out;
126         }
127         printf("El contenido del registro 3 es: '%s'.\n", reg);
128         free(reg);
129
130         /* Ve archivos auxiliares */
131         printf("\n--------------------------------------------------\n");
132         printf("Archivos auxiliares:\n\n");
133         ver_archivo_FS(efs);
134
135         /* compacta archivo */
136         printf("\n--------------------------------------------------\n");
137         printf("Compactando archivo.......\n\n");
138         efs->compactar(efs);
139
140         /* Lee registros */
141         reg = efs->leer_registro(efs, id1, &size, &err);
142         if (err) {
143                 printf("No se pudo leer el registro 1 (%d).\n", err);
144                 goto out;
145         }
146         printf("El contenido del registro 1 es: '%s'.\n", reg);
147         free(reg);
148
149         reg = efs->leer_registro(efs, id3, &size, &err);
150         if (err) {
151                 printf("No se pudo leer el registro 3 (%d).\n", err);
152                 goto out;
153         }
154         printf("El contenido del registro 3 es: '%s'.\n", reg);
155         free(reg);
156
157         /* Ve archivos auxiliares */
158         printf("\n--------------------------------------------------\n");
159         printf("Archivos auxiliares:\n\n");
160         ver_archivo_FS(efs);
161
162 out:
163         emufs_destruir(efs);
164         return err;
165
166 }