de mas, pero me queria asegurar)
-EMUFS_REG_ID emufs_tipo1_grabar_registro(EMUFS* efs, void* reg,
- EMUFS_REG_SIZE reg_size, int* err)
+EMUFS_REG_ID emufs_tipo1_grabar_registro(EMUFS* efs, void* reg, EMUFS_REG_SIZE reg_size, int* err)
{
EMUFS_TIPO1_REG_HEADER reg_header; /* cabecera del registro a guardar */
EMUFS_FREE fs; /* espacio libre en el bloque */
{
EMUFS_TIPO1_REG_HEADER reg_header; /* cabecera del registro a guardar */
EMUFS_FREE fs; /* espacio libre en el bloque */
/* si no hay bloques con suficiente espacio creo un bloque nuevo */
if (block_id == EMUFS_NOT_FOUND) {
/* tamaño máximo ultilizable para datos en un bloque */
/* si no hay bloques con suficiente espacio creo un bloque nuevo */
if (block_id == EMUFS_NOT_FOUND) {
/* tamaño máximo ultilizable para datos en un bloque */
- EMUFS_BLOCK_SIZE block_space
- = efs->tam_bloque - sizeof(EMUFS_TIPO1_REG_HEADER);
+ EMUFS_BLOCK_SIZE block_space = efs->tam_bloque - sizeof(EMUFS_TIPO1_REG_HEADER);
/* identificador del bloque que se guarda */
EMUFS_BLOCK_ID curr_block_id = EMUFS_NOT_FOUND;
/* tamaño de la porción de registro que se guarda */
/* identificador del bloque que se guarda */
EMUFS_BLOCK_ID curr_block_id = EMUFS_NOT_FOUND;
/* tamaño de la porción de registro que se guarda */
reg_header.size -= chunk_size; /* Resto lo que ya guardé */
chunk_size = MIN(reg_header.size, block_space);
/* graba porción del registro en bloque */
reg_header.size -= chunk_size; /* Resto lo que ya guardé */
chunk_size = MIN(reg_header.size, block_space);
/* graba porción del registro en bloque */
- emufs_tipo1_escribir_reg_chunk_en_memoria(block, reg_header,
- chunk_ptr, chunk_size);
+ emufs_tipo1_escribir_reg_chunk_en_memoria(block, reg_header, chunk_ptr, chunk_size);
/* graba el bloque en el archivo */
/* graba el bloque en el archivo */
- curr_block_id = emufs_tipo1_grabar_bloque(efs, block,
- EMUFS_NOT_FOUND, err);
+ curr_block_id = emufs_tipo1_grabar_bloque(efs, block, EMUFS_NOT_FOUND, err);
if (*err) {
PERR("error al grabar bloque");
free(block);
if (*err) {
PERR("error al grabar bloque");
free(block);
if (wrt_offset == -1) {
/* Obtengo un ID libre para el registro y luego grabo a disco */
if (wrt_offset == -1) {
/* Obtengo un ID libre para el registro y luego grabo a disco */
- id_reg = emufs_idx_get_new_id(efs, err);
+ id_reg = emufs_idx_get_new_id(efs, err);
fseek(f_data, 0, SEEK_END);
reg_offset = ftell(f_data);
fseek(f_data, 0, SEEK_END);
reg_offset = ftell(f_data);
} else {
/* Obtengo un ID libre para el registro y luego grabo en disco */
} else {
/* Obtengo un ID libre para el registro y luego grabo en disco */
- id_reg = emufs_idx_get_new_id(efs, err);
+ id_reg = emufs_idx_get_new_id(efs, err);
reg_offset = wrt_offset;
fseek(f_data,reg_offset,0);
reg_offset = wrt_offset;
fseek(f_data,reg_offset,0);
- /* Escribo [RegId]|[RegSize]|[RegData] */
+ /* Escribo [RegId]|[RegSize]|[RegData] */
fwrite(&id_reg,sizeof(EMUFS_REG_ID),1,f_data);
fwrite(®_size,sizeof(EMUFS_REG_SIZE),1,f_data);
fwrite(ptr,reg_size,1,f_data);
fwrite(&id_reg,sizeof(EMUFS_REG_ID),1,f_data);
fwrite(®_size,sizeof(EMUFS_REG_SIZE),1,f_data);
fwrite(ptr,reg_size,1,f_data);
/* Pisa con basura lo que es hasta el momento un reg en el disco para indicar su borrado (Debug Purposes Only) */
int emufs_tipo2_dummyfill(EMUFS *efs, EMUFS_OFFSET reg_pos, EMUFS_REG_SIZE amount)
{
/* Pisa con basura lo que es hasta el momento un reg en el disco para indicar su borrado (Debug Purposes Only) */
int emufs_tipo2_dummyfill(EMUFS *efs, EMUFS_OFFSET reg_pos, EMUFS_REG_SIZE amount)
{
char *ptr_cur;
unsigned long fill_size,byte_count;
char *ptr_cur;
unsigned long fill_size,byte_count;
- /* Armamos el filename del archivo de datos */
- strcpy(name_f,efs->nombre);
+ /* Armamos el filename del archivo de datos */
+ strcpy(name_f,efs->nombre);
- if ((f_data = fopen(name_f,"rb+")) == NULL) return -1; /* ERROR */
+ if ((f_data = fopen(name_f,"rb+")) == NULL) return -1; /* ERROR */
/* Preparo el garbage y se lo tiro encima */
fill_size = amount+sizeof(EMUFS_REG_ID)+sizeof(EMUFS_REG_SIZE);
dummyfill = (char*)malloc(fill_size);
/* Preparo el garbage y se lo tiro encima */
fill_size = amount+sizeof(EMUFS_REG_ID)+sizeof(EMUFS_REG_SIZE);
dummyfill = (char*)malloc(fill_size);
+ memset(dummyfill, 0, fill_size);
- for (byte_count = 0; byte_count < fill_size; ++byte_count) memcpy(ptr_cur+byte_count,"#",1);
+ for (byte_count = 0; byte_count < fill_size; ++byte_count) memcpy(ptr_cur+byte_count,0,1);
fseek(f_data,reg_pos,SEEK_SET);
fwrite(dummyfill,fill_size,1,f_data);
fclose(f_data);
fseek(f_data,reg_pos,SEEK_SET);
fwrite(dummyfill,fill_size,1,f_data);
fclose(f_data);
(*size) = i[0]+i[1]+i[2]+i[3]+i[4]+i[5];
tmp = (char *)malloc((*size));
if (tmp == NULL) return NULL;
(*size) = i[0]+i[1]+i[2]+i[3]+i[4]+i[5];
tmp = (char *)malloc((*size));
if (tmp == NULL) return NULL;
memcpy(tmp, &src->numero, i[0]);
memcpy(tmp+i[0], src->desc, i[1]);
memcpy(tmp+i[0]+i[1], src->presentacion, i[2]);
memcpy(tmp, &src->numero, i[0]);
memcpy(tmp+i[0], src->desc, i[1]);
memcpy(tmp+i[0]+i[1], src->presentacion, i[2]);
* registro se vea bien
*/
tmp = (char *)malloc(sizeof(t_Articulo));
* registro se vea bien
*/
tmp = (char *)malloc(sizeof(t_Articulo));
+ memset(tmp, '*', sizeof(t_Articulo));
memcpy(tmp, from, sizeof(t_Articulo));
(*size) = sizeof(t_Articulo);
}
memcpy(tmp, from, sizeof(t_Articulo));
(*size) = sizeof(t_Articulo);
}
- 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 {
strcpy(salida, XML_GET_CONTENT(tmp->children));
} else {
- salida = (char *)malloc(sizeof(char)*400);
+ salida = (char *)malloc(sizeof(char));
salida[0] = '\0';
}
return salida;
salida[0] = '\0';
}
return salida;
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));
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) {
for (node=inicio ; node ; node = node->next) {
if (node->type == XML_ELEMENT_NODE) {
if (strcmp(node->name, "FACTURA") == 0) {
error = 0;
id = tmp->fp->grabar_registro(tmp->fp, save, size, &error);
error = 0;
error = 0;
id = tmp->fp->grabar_registro(tmp->fp, save, size, &error);
error = 0;
- id_texto = tmp->fp_texto->grabar_registro(tmp->fp_texto, fact.nota, 400, &error);
+ 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);
agregar_nodo_factura(tmp, crear_nodo_factura(id, id_texto, fact.numero));
if (fact.items) free(fact.items);
if (fact.nota) free(fact.nota);
(*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;
(*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;
/* Ahora copio la info */
memcpy(tmp, &f->numero, i[0]);
memcpy(tmp, &f->procdoi, i[1]);
/* Ahora copio la info */
memcpy(tmp, &f->numero, i[0]);
memcpy(tmp, &f->procdoi, i[1]);