efs->tam_bloque = tam_bloque;
efs->tam_reg = tam_reg;
efs->nombre = str_dup(filename);
+ efs->indices = NULL;
/* Abre archivo de datos. */
strcpy(name, filename);
/* Crea archivo de índice. */
if (emufs_idx_crear(efs)) {
/* TODO ERROR */
+ fclose(fp);
free(efs->nombre);
free(efs);
return NULL;
/* Crea archivo de control de espacio libre. */
if (emufs_fsc_crear(efs)) {
/* TODO ERROR */
+ fclose(fp);
free(efs->nombre);
free(efs);
return NULL;
/* Crea archivo de identificadores borrados (recuperables). */
if (emufs_did_crear(efs)) {
/* TODO ERROR */
+ fclose(fp);
free(efs->nombre);
free(efs);
return NULL;
if ((err = emufs_tipo1_inicializar(efs))) {
/* TODO ERROR */
PERR("No se pudo inicializar el EMUFS de tipo1");
+ fclose(fp);
free(efs->nombre);
free(efs);
return NULL;
return 0;
}
+int emufs_agregar_indice(EMUFS *emu, char *nombre, INDICE_TIPO tipo, INDICE_TIPO_DATO tipo_dato, unsigned int offset)
+{
+ INDICE *tmp;
+ tmp = emufs_indice_crear(emu, nombre, tipo, tipo_dato, offset);
+
+ if (tmp == NULL) return 0;
+
+ if (emu->indices==NULL)
+ emu->indices = tmp;
+ else {
+ tmp->sig = emu->indices;
+ emu->indices = tmp;
+ }
+ return 1;
+}
+