From: Ricardo Markiewicz Date: Fri, 28 May 2004 05:02:31 +0000 (+0000) Subject: nada importante, cosas que se escapan por tocar para probar, etc X-Git-Tag: svn_import_r684~146 X-Git-Url: https://git.llucax.com/z.facultad/75.06/emufs.git/commitdiff_plain/ce3cea71f571b6f5dcff4857718ae7e22dd93172 nada importante, cosas que se escapan por tocar para probar, etc --- diff --git a/emufs/indice_b.c b/emufs/indice_b.c index f032d51..4edaca2 100644 --- a/emufs/indice_b.c +++ b/emufs/indice_b.c @@ -104,7 +104,6 @@ int emufs_indice_b_insertar(INDICE *idx, CLAVE clave, INDICE_DATO dato) return 0; } - /* TODO : Implementar carga de valor en clave duplicada! */ b_insertar_dup_en_pos(idx, claves[i].dato, dato); if (idx->tipo_dato == IDX_STRING) { @@ -285,7 +284,7 @@ char *b_leer_nodo(INDICE *idx, int id) } /* Si estoy manejando string tengo que sacar las abreviaturas */ -/* XXX if (idx->tipo_dato == IDX_STRING) { +/* if (idx->tipo_dato == IDX_STRING) { b_leer_header(out, &header); claves = b_leer_claves(out, &header); desabreviar_claves(idx, claves, &header); @@ -301,7 +300,7 @@ static void b_grabar_nodo(INDICE *idx, int id, char *data) B_NodoEntry *claves; /* Si las claves son de tipo string debo abreviar antes de guardar */ -/*XXX if (idx->tipo_dato == IDX_STRING) { +/* if (idx->tipo_dato == IDX_STRING) { b_leer_header(data, &header); claves = b_leer_claves(data, &header); abreviar_claves(idx, claves, &header); diff --git a/emufs/indices.c b/emufs/indices.c index c570894..207e999 100644 --- a/emufs/indices.c +++ b/emufs/indices.c @@ -130,7 +130,7 @@ CLAVE emufs_indice_generar_clave_desde_valor(INDICE *idx, char *data) error = 0; /* Le agrego un * para diferenciarla, porque no la tengo abreviada! */ /* Hack feo :-D */ - sprintf(salvar, "*%s", data); + sprintf(salvar, "%s", data); k.i_clave = idx->emu_string->grabar_registro(idx->emu_string, salvar, strlen(salvar)+1, @@ -155,6 +155,8 @@ CLAVE emufs_indice_generar_clave(INDICE *idx, char *data) break; case IDX_STRING: error = 0; + PERR(idx->nombre); + PERR(data+idx->offset); k.i_clave = idx->emu_string->grabar_registro(idx->emu_string, data+idx->offset, strlen(data+idx->offset)+1, @@ -177,13 +179,15 @@ int emufs_indice_es_menor(INDICE *idx, CLAVE c1, CLAVE c2) case IDX_INT: return c1.i_clave < c2.i_clave; case IDX_STRING: + error = 0; sc1 = idx->emu_string->leer_registro(idx->emu_string, c1, &dummy, &error); + error = 0; sc2 = idx->emu_string->leer_registro(idx->emu_string, c2, &dummy, &error); /* Salteo el caracter que indica si la clave en temporal */ a = b = 0; if (*sc1 == '*') a = 1; if (*sc2 == '*') b = 1; - error = (strcmp(sc1+a, sc2+b) < 0); + error = (strcmp(sc1, sc2) < 0); free(sc1); free(sc2); return error; @@ -211,7 +215,7 @@ int emufs_indice_es_igual(INDICE *idx, CLAVE c1, CLAVE c2) a = b = 0; if (*sc1 == '*') a=1; if (*sc2 == '*') b=1; - error = (strcmp(sc1+a, sc2+b) == 0); + error = (strcmp(sc1, sc2) == 0); free(sc1); free(sc2); return error; diff --git a/emufs_gui/articulos.c b/emufs_gui/articulos.c index 4c69770..737bff6 100644 --- a/emufs_gui/articulos.c +++ b/emufs_gui/articulos.c @@ -112,8 +112,8 @@ t_LstArticulos *art_cargar(t_Parametros *param) tmp->fp = emufs_crear("articulos", param->tipo_arch_art, param->tam_bloque_art, sizeof(t_Articulo)); /* Agrego los indices */ PERR("Voy a agregar un indice"); - emufs_agregar_indice(tmp->fp, "presentacion", IND_EXAHUSTIVO, IND_B, IDX_STRING, STRUCT_OFFSET(un_articulo, presentacion), 512); - emufs_agregar_indice(tmp->fp, "desc", IND_EXAHUSTIVO, IND_B, IDX_STRING, STRUCT_OFFSET(un_articulo, desc), 512); + emufs_agregar_indice(tmp->fp, "presentacion", IND_EXAHUSTIVO, IND_B, IDX_STRING, STRUCT_OFFSET(un_articulo, presentacion), 20480); + emufs_agregar_indice(tmp->fp, "desc", IND_EXAHUSTIVO, IND_B, IDX_STRING, STRUCT_OFFSET(un_articulo, desc), 2048); emufs_agregar_indice(tmp->fp, "codigo", IND_PRIMARIO, IND_B, IDX_INT, 0, 512); if (!tmp->fp) { PERR("NO SE PUDO CREAR ARCHIVO ARTICULOS"); @@ -733,15 +733,14 @@ void art_consultas_codigos(char *s, t_Lista *lista) void art_consultas_stock(char *s, t_Lista *lista) { - EMUFS_REG_ID dummy; - int hasta_codigo; - CLAVE k, menor, mayor; - t_Articulo *articulo; + CLAVE k, menor; + t_Articulo articulo; t_Form *form; INDICE *idx; float por; - idx = lst_articulos->fp->indices; + idx = emufs_buscar_indice_por_nombre(lst_articulos->fp, "desc"); + if (idx == NULL) PERR("NO SE ENCUENTRA INDICE DESC!!!"); /* El usuario ingresa rango a listar */ form = form_crear(lista->win); @@ -756,23 +755,35 @@ void art_consultas_stock(char *s, t_Lista *lista) wrefresh(lista->win); menor = idx->obtener_menor_clave(idx); - mayor = idx->obtener_mayor_clave(idx); k = menor; - hasta_codigo = mayor.i_clave; - while ((k.i_clave != -1) && (k.i_clave <= hasta_codigo)) { - articulo = art_obtener(lst_articulos, k.i_clave, &dummy); - if (articulo != NULL) { - if (atof(articulo->existencia) <= (1.0f+por)*atof(articulo->emin)) { - lista_agregar_fila(lista, - articulo->numero, - articulo->desc, - articulo->existencia, - articulo->emin - ); + while (k.i_clave != -1) { + char *tmp; + EMUFS_REG_SIZE size; + int error, cant, i; + INDICE_DATO *datos; + CLAVE k1; + datos = idx->buscar_entradas(idx, k, &cant); + for(i=0; ifp->leer_registro(lst_articulos->fp, k1, &size, &error); + + if (tmp != NULL) { + procesar_leer_articulo(&articulo, tmp, size, lst_articulos); + + if (atof(articulo.existencia) <= (1.0f+por)*atof(articulo.emin)) { + lista_agregar_fila(lista, + articulo.numero, + articulo.desc, + articulo.existencia, + articulo.emin + ); + } + free(tmp); } - free(articulo); } + if (datos) free(datos); k = idx->obtener_sig_clave(idx, k); } @@ -828,7 +839,7 @@ void art_consultas_varias(char *nombre_indice, char *titulo, t_Lista *lista) PERR("NO SE PUDO RECUPERAR EL REGISTRO DE DATOS"); } } - + if (datos) free(datos); curs_set(0); lista_ejecutar(lista); curs_set(1); diff --git a/emufs_gui/emufs.xml b/emufs_gui/emufs.xml index 8fd45ce..689e50e 100644 --- a/emufs_gui/emufs.xml +++ b/emufs_gui/emufs.xml @@ -4,7 +4,7 @@ articulos.xml - +