}
/* 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;
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 */
}
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;
+
}