]> git.llucax.com Git - z.facultad/75.06/emufs.git/blobdiff - emufs_gui/facturas.c
Soporte para bloques mas chicos que el registro.
[z.facultad/75.06/emufs.git] / emufs_gui / facturas.c
index ec87770eba0c0424012395c95402bb46a86cca7e..9e791cf96f0283e3fd106d3ba4b14c077a3595b6 100644 (file)
@@ -115,10 +115,10 @@ char *leer_nota(xmlNode *node)
        }
 
        if (tmp) {
-               salida = (char *)malloc(sizeof(char)*400); /*(strlen(XML_GET_CONTENT(tmp->children))+1));*/
+               salida = (char *)malloc(sizeof(char)*(strlen(XML_GET_CONTENT(tmp->children))+1));
                strcpy(salida, XML_GET_CONTENT(tmp->children));
        } else {
-               salida = (char *)malloc(sizeof(char)*400);
+               salida = (char *)malloc(sizeof(char));
                salida[0] = '\0';
        }
        return salida;
@@ -170,7 +170,7 @@ t_LstFacturas *fact_cargar(const char *filename, int tipo, int tam_bloque)
                        cant_items = 0;
                }
                tmp->fp = emufs_crear("facturas", tipo-1, tam_bloque, sizeof(t_Factura)-sizeof(char *)-sizeof(t_Item*)+cant_items*sizeof(t_Item));
-               tmp->fp_texto = emufs_crear("notas", 1, 420, 400);
+               tmp->fp_texto = emufs_crear("notas", 1, 100, 0);
                for (node=inicio ; node ; node = node->next) {
                        if (node->type == XML_ELEMENT_NODE) {
                                if (strcmp(node->name, "FACTURA") == 0) {
@@ -192,8 +192,10 @@ t_LstFacturas *fact_cargar(const char *filename, int tipo, int tam_bloque)
 
                                        save = procesar_guardar_factura(&fact, lst_facturas, &size);
                                        if (save != NULL) {
+                                               error = 0;
                                                id = tmp->fp->grabar_registro(tmp->fp, save, size, &error);
-                                               id_texto = tmp->fp_texto->grabar_registro(tmp->fp_texto, fact.nota, 400, &error);
+                                               error = 0;
+                                               id_texto = tmp->fp_texto->grabar_registro(tmp->fp_texto, fact.nota, strlen(fact.nota)+1, &error);
                                                agregar_nodo_factura(tmp, crear_nodo_factura(id, id_texto, fact.numero));
                                                if (fact.items) free(fact.items);
                                                if (fact.nota) free(fact.nota);
@@ -250,6 +252,7 @@ t_Factura *fact_buscar(t_LstFacturas *lst, int numero, EMUFS_REG_ID *id, EMUFS_R
                if (reg->numero == numero) {
                        size = 0;
                        fprintf(stderr, "Leer me dice que %lu\n", size);
+                       error = 0;
                        leo = lst->fp->leer_registro(lst->fp, reg->num_reg, &size, &error);
                        fprintf(stderr, "Leer me dice que %lu\n", size);
                        if (leo != NULL) {
@@ -500,6 +503,7 @@ void fact_agregar(char *s)
 
        entrada = procesar_guardar_factura(&fact,lst_facturas, &size);
        if (entrada) {
+               error = 0;
                id = lst_facturas->fp->grabar_registro(lst_facturas->fp, entrada, size, &error);
                /*id_texto = tmp->fp_texto->grabar_registro(tmp->fp_texto, fact.nota, 400, &error);*/
                /* TODO : -1 == id_texto !!!!!!!! XXX XXX XXX XXX XXX XXX XXX */
@@ -539,6 +543,7 @@ void *procesar_guardar_factura(t_Factura *f, t_LstFacturas *lst, EMUFS_REG_SIZE
                        (*size) = i[0]+i[1]+i[2]+i[3]+i[4]+i[5]+i[6]+i[7]+i[8]+i[9]+i[10];
                        tmp = (char *)malloc(*size);
                        if (tmp == NULL) return NULL;
+                       memset(tmp, 0, *size);
                        /* Ahora copio la info */
                        memcpy(tmp, &f->numero, i[0]);
                        memcpy(tmp, &f->procdoi, i[1]);