* CodeClean : se limpia un poco algunas cosas, se ajusta coding style.
} else {
fclose(f_did);
/* si el archivo esta vacio */
} else {
fclose(f_did);
/* si el archivo esta vacio */
+ n_regid = EMUFS_NOT_FOUND;
}
/* Me devuelve el ID del bloque u Offset del Gap donde quepa un registro, y guarda en n_freespace el espacio libre actualizado */
}
/* Me devuelve el ID del bloque u Offset del Gap donde quepa un registro, y guarda en n_freespace el espacio libre actualizado */
-EMUFS_BLOCK_ID emufs_fsc_buscar_lugar(EMUFS *emu, EMUFS_FREE n_RegSize, EMUFS_FREE *n_freespace)
+EMUFS_BLOCK_ID emufs_fsc_buscar_lugar(EMUFS *emu, EMUFS_FREE regsize, EMUFS_FREE *freespace)
{
FILE *f_fsc;
EMUFS_FSC reg;
char name_f_fsc[255];
{
FILE *f_fsc;
EMUFS_FSC reg;
char name_f_fsc[255];
- unsigned short int b_Found = 0;
strcpy(name_f_fsc,emu->nombre);
strcat(name_f_fsc, EMUFS_FSC_EXT);
strcpy(name_f_fsc,emu->nombre);
strcat(name_f_fsc, EMUFS_FSC_EXT);
- if ( (f_fsc = fopen(name_f_fsc,"r"))==NULL ) return -1;
+ if ( (f_fsc = fopen(name_f_fsc,"r"))==NULL ) return EMUFS_NOT_FOUND;
/* Inicializamos la estructura para devolver algun valor en concreto */
/* en caso de que no se halle un espacio libre apropiado */
/* Inicializamos la estructura para devolver algun valor en concreto */
/* en caso de que no se halle un espacio libre apropiado */
- while(!feof(f_fsc) && !b_Found){
if (fread(®,sizeof(EMUFS_FSC),1,f_fsc) != 1) continue;
if (fread(®,sizeof(EMUFS_FSC),1,f_fsc) != 1) continue;
- if (reg.n_freespace >= n_RegSize) b_Found = 1;
+ if (reg.n_freespace >= regsize) {
+ found = 1;
+ break;
+ }
}
/* Si salio por error o por fin de archivo y no encontro space... */
}
/* Si salio por error o por fin de archivo y no encontro space... */
- if (!b_Found) {
- reg.n_marker = -1;
- *n_freespace = emu->tam_bloque;
+ if (!found) {
+ reg.n_marker = EMUFS_NOT_FOUND;
+ *freespace = emu->tam_bloque;
- else *n_freespace = reg.n_freespace;
+ else *freespace = reg.n_freespace;
fclose(f_fsc);
return reg.n_marker;
fclose(f_fsc);
return reg.n_marker;
/* Devuelve el mayor id de registro utilizado so far en el archivo de datos, revisando el indice. */
EMUFS_REG_ID emufs_idx_buscar_mayor_id(EMUFS *emu)
{
/* Devuelve el mayor id de registro utilizado so far en el archivo de datos, revisando el indice. */
EMUFS_REG_ID emufs_idx_buscar_mayor_id(EMUFS *emu)
{
- EMUFS_REG_ID n_idreg, max = 0;
FILE *f_idx;
EMUFS_IDX reg;
char name_f_idx[255]; /* TODO usar malloc para no limitar el tamaño de nombre de archivo */
FILE *f_idx;
EMUFS_IDX reg;
char name_f_idx[255]; /* TODO usar malloc para no limitar el tamaño de nombre de archivo */
- unsigned short int b_found = 0;
strcpy(name_f_idx,emu->nombre);
strcat(name_f_idx, EMUFS_IDX_EXT);
if ( (f_idx = fopen(name_f_idx,"r")) == NULL) return -1; /*ERROR*/
strcpy(name_f_idx,emu->nombre);
strcat(name_f_idx, EMUFS_IDX_EXT);
if ( (f_idx = fopen(name_f_idx,"r")) == NULL) return -1; /*ERROR*/
while ( !feof(f_idx) ){
/* Me aseguro de leer la cantidad de bytes correcta */
if (fread(®,sizeof(EMUFS_IDX),1,f_idx) != 1) continue;
while ( !feof(f_idx) ){
/* Me aseguro de leer la cantidad de bytes correcta */
if (fread(®,sizeof(EMUFS_IDX),1,f_idx) != 1) continue;
- if ( reg.n_idreg >= max ) {
+ if (reg.n_idreg >= max) {
return (0);
else
return(max+1);
return (0);
else
return(max+1);
/*leo todos los que quedan*/
fseek(f_idx,final,SEEK_SET);
fread(buffer,sizeof(EMUFS_IDX),cant-1,f_idx) ;
/*leo todos los que quedan*/
fseek(f_idx,final,SEEK_SET);
fread(buffer,sizeof(EMUFS_IDX),cant-1,f_idx) ;
- for( i=0; i<cant-1; i ++)
- printf("buffer[%d] = %ld , %d\n",i,*(buffer+i),*(buffer+2*i));
+/* for( i=0; i<cant-1; i ++)
+ printf("buffer[%ld] = %ld , %ld\n",i,*(buffer+i),*(buffer+2*i));*/
/*apunto al lugar donde deben ser guardados*/
fseek(f_idx,actual,SEEK_SET);
printf(" actual = %ld\n",actual);
/*apunto al lugar donde deben ser guardados*/
fseek(f_idx,actual,SEEK_SET);
printf(" actual = %ld\n",actual);
strcat(name_f,".dat");
/* me devuelve el ID del bloque donde quepa un registro y el espacio libre en "fs"*/
strcat(name_f,".dat");
/* me devuelve el ID del bloque donde quepa un registro y el espacio libre en "fs"*/
- num_bloque = emufs_fsc_buscar_lugar(emu, emu->tam_reg, &fs);
+ num_bloque = emufs_fsc_buscar_lugar(emu, emu->tam_reg+sizeof(EMUFS_REG_ID), &fs);
/*si no hay bloques con suficiente espacio creo un bloque nuevo */
if (num_bloque == -1) {
if ( (file = fopen(name_f,"a+"))==NULL ) return -1; /*ERROR*/
/*si no hay bloques con suficiente espacio creo un bloque nuevo */
if (num_bloque == -1) {
if ( (file = fopen(name_f,"a+"))==NULL ) return -1; /*ERROR*/
- if ( (id = emufs_did_get_last(emu)) == -1 )
+ if ( (id = emufs_did_get_last(emu)) == EMUFS_NOT_FOUND )
id = emufs_idx_buscar_mayor_id(emu);
return id;
}
id = emufs_idx_buscar_mayor_id(emu);
return id;
}
static void *procesar_guardar_factura(t_Factura *f, t_LstFacturas *lst, int *size);
/* es por cada mes a generar */
static void *procesar_guardar_factura(t_Factura *f, t_LstFacturas *lst, int *size);
/* es por cada mes a generar */
-#define CANT_FACTURAS 500
+#define CANT_FACTURAS 1500
t_LstFacturas *fact_cargar(const char *filename)
{
t_LstFacturas *fact_cargar(const char *filename)
{
lst_facturas = (t_LstFacturas *)malloc(sizeof(t_LstFacturas));
if (filename != NULL) {
lst_facturas = (t_LstFacturas *)malloc(sizeof(t_LstFacturas));
if (filename != NULL) {
- lst_facturas->fp = emufs_crear("facturas", T3, sizeof(t_Factura)*20+100, sizeof(t_Factura));
+ lst_facturas->fp = emufs_crear("facturas", T3, sizeof(t_Factura)*20, sizeof(t_Factura));
/* Genero las facturas en forma automática */
/* Genero las facturas de fecha Abril 2004 */
srand(time(NULL));
numero = 0;
cant = 0;
/* Genero las facturas en forma automática */
/* Genero las facturas de fecha Abril 2004 */
srand(time(NULL));
numero = 0;
cant = 0;
- for(i=0; i<CANT_FACTURAS*0.1; i++) {
+ for(i=0; i<CANT_FACTURAS; i++) {
/* Entre 10 y 15 ITEMS! */
fact.numero = numero;
sprintf(fact.emision, "200404%02d", al_azar(1, 30));
/* Entre 10 y 15 ITEMS! */
fact.numero = numero;
sprintf(fact.emision, "200404%02d", al_azar(1, 30));