]> git.llucax.com Git - z.facultad/75.06/emufs.git/blobdiff - emufs_gui/tree_viewer.c
* BUGFIX : En emufs_destruir habia un bug donde eliminaba mal y se colgaba
[z.facultad/75.06/emufs.git] / emufs_gui / tree_viewer.c
index 34fe6f2d1b34f968a5150ace6d5c8504606c2068..0c6e9683aceb37b2595fdbb02d31d4ccb9d7fe75 100644 (file)
@@ -1,5 +1,27 @@
 
 #include "tree_viewer.h"
+#include "emufs.h"
+
+void sprint_ind(INDICE *idx, char *dst, B_NodoEntry e)
+{
+       int error;
+       char * leido;
+       EMUFS_REG_SIZE dummy;
+
+       switch (idx->tipo_dato) {
+               case IDX_INT:
+                       sprintf(dst, "(%d)%d", e.clave.i_clave, e.hijo_derecho);
+                       break;
+               case IDX_FLOAT:
+                       sprintf(dst, "(%.2f)%d", e.clave.f_clave, e.hijo_derecho);
+                       break;
+               case IDX_STRING:
+                       error = 0;
+                       leido = idx->emu_string->leer_registro(idx->emu_string, e.clave, &dummy, &error);
+                       sprintf(dst, "(%s)%d", leido, e.hijo_derecho);
+                       free(leido);
+               }
+}
 
 int emufs_indice_b_ver(INDICE *idx, WINDOW *win, int w, int h, int id)
 {
@@ -10,7 +32,7 @@ int emufs_indice_b_ver(INDICE *idx, WINDOW *win, int w, int h, int id)
        char *nodo;
        char tmp[100];
        int i;
-       int posibles_proximos[100];
+       int posibles_proximos[1000];
        int proximo;
 
        if (id == -1) return 0;
@@ -44,13 +66,9 @@ int emufs_indice_b_ver(INDICE *idx, WINDOW *win, int w, int h, int id)
                wmove(win, y, 0);
                sprintf(tmp, "%d", header.hijo_izquierdo);
                waddstr(win, tmp);
+               fprintf(stderr, "CANT DE CLAVES = %d\n", header.cant);
                for(i=0; i<header.cant; i++) {
-                       sprintf(tmp, "(%d)%d",
-                                       claves[i].clave.i_clave,
-       /*                              claves[i].dato.id,
-                                       claves[i].dato.bloque,*/
-                                       claves[i].hijo_derecho
-                       );
+                       sprint_ind(idx, tmp, claves[i]);
                        posibles_proximos[i] = claves[i].hijo_derecho;
                        waddstr(win, tmp);
                }