X-Git-Url: https://git.llucax.com/z.facultad/75.06/emufs.git/blobdiff_plain/a499b030d1840a0714721695cd6fcf54bc7dbb68..7bef9a814dacda99e7bff6d2374b76a48bc13002:/emufs/emufs.c?ds=sidebyside diff --git a/emufs/emufs.c b/emufs/emufs.c index 14fcafb..76260ac 100644 --- a/emufs/emufs.c +++ b/emufs/emufs.c @@ -342,10 +342,40 @@ int debug_ver_estadisticas(EMUFS* efs) return 0; } -int emufs_agregar_indice(EMUFS *emu, char *nombre, INDICE_TIPO tipo, INDICE_TIPO_DATO tipo_dato, unsigned int offset, unsigned int tam_bloque) +int emufs_agregar_indice(EMUFS *emu, char *nombre, INDICE_FUNCION funcion, INDICE_TIPO tipo, INDICE_TIPO_DATO tipo_dato, unsigned int offset, unsigned int tam_bloque) { INDICE *tmp; - tmp = emufs_indice_crear(emu, nombre, tipo, tipo_dato, offset, tam_bloque); + int error=0; + + /* Verifico que no existe un indice con el mismo nombre */ + /* y que no exista un indice primario */ + PERR("Agregando indice"); + tmp = emu->indices; + while (tmp) { + if (strcmp(tmp->nombre, nombre)==0) { + error = 1; + break; + } + if ((funcion == IND_PRIMARIO) && (tmp->funcion == funcion)) { + error = 2; + break; + } + } + + if (tmp != NULL) { + switch (error) { + case 1: + PERR("Ya existe un indice con el mismo nombre!"); + break; + case 2: + PERR("EMUFS ya tiene indice primario!!"); + } + return 0; + } + + /* Creo el nuevo indice */ + PERR("Creando indice\n"); + tmp = emufs_indice_crear(emu, nombre, funcion, tipo, tipo_dato, offset, tam_bloque); if (tmp == NULL) return 0; @@ -358,3 +388,20 @@ int emufs_agregar_indice(EMUFS *emu, char *nombre, INDICE_TIPO tipo, INDICE_TIPO return 1; } +INDICE_DATO *emufs_buscar_registros(EMUFS *emu, char *indice, CLAVE clave, int *cant) +{ + INDICE *tmp; + tmp = emu->indices; + while (tmp) { + if (strcmp(tmp->nombre, indice) == 0) break; + } + + if (tmp == NULL) { + PERR("NO EXISTE EL INDICE"); + cant = 0; + return NULL; + } + + return tmp->buscar_entradas(tmp, clave, cant); +} +