]> git.llucax.com Git - z.facultad/75.06/emufs.git/commitdiff
* Mas detalles que van surgiendo mientras voy pensando.
authorRicardo Markiewicz <gazer.arg@gmail.com>
Fri, 21 May 2004 03:55:01 +0000 (03:55 +0000)
committerRicardo Markiewicz <gazer.arg@gmail.com>
Fri, 21 May 2004 03:55:01 +0000 (03:55 +0000)
emufs/indice_b.c

index 89de6e78571a0633735a554a610681a20e4888a9..183c6fe1c4d87d46b614345f3c2221394e41237c 100644 (file)
@@ -102,8 +102,14 @@ int emufs_indice_b_insertar(INDICE *idx, CLAVE clave, INDICE_DATO dato)
                i=0;
                while ((i<header.cant) && (emufs_indice_es_menor(idx, claves[i].clave, clave))) i++;
                if ((i<header.cant) && (emufs_indice_es_igual(idx, claves[i].clave, clave))) {
-                       /* CLAVE DUPLICADA! */
-                       return 0;
+                       if (idx->tipo == IND_PRIMARIO) {
+                               PERR("Indice primario no puede contener claves duplicadas!");
+                               return 0;
+                       }
+                       
+                       /* TODO : Implementar carga de valor en clave duplicada! */
+                       
+                       return 1;
                } else {
                        if (i == 0) {
                                nodo = b_leer_nodo(idx, header.hijo_izquierdo);
@@ -130,6 +136,12 @@ INDICE_DATO emufs_indice_b_buscar(INDICE *idx, CLAVE clave)
        B_NodoEntry *claves;
        char *nodo, *tmp;
        
+       if (idx->tipo != IND_PRIMARIO) {
+               /* SOLO SE PUEDE BUSCAR CON CLAVE UNICA! */
+               ret.id = ret.bloque = -1;
+               return ret;
+       }
+       
        /* Leo la raiz */
        nodo = b_leer_nodo(idx, 0);
        while (nodo) {