/** Leo un registro del archivo, devuelve cero si no lo encuentra.**/
int leer_registro(int ID, void *str, unsigned long tam)
{
- struct param_cte_t dato;
char* bloque = (char*)malloc(tam);
char ID_char[4];
- int block, i, ID_aux, a, b, c, d;
+ int block, i, ID_aux, a, b, c, d, tamanio_registro;
int iterador = 0;
/* tengo que crear los archivos de indice antes de usarlos!!!!!!!!!*/
if ( (block_reg = fopen("block_reg.dat","a+")) == NULL )
if (leer_bloque(block,bloque,tam)==-1)
return -1; /*No se pudo leer el bloque*/
- while ( iterador != (tam/sizeof(dato)) ){
+ while ( iterador != (tam/tamanio_registro) ){
a = bloque[0+iterador];
b = bloque[1+iterador];
c = bloque[2+iterador];
d = bloque[3+iterador];
ID_aux = (d << 0 ) | (c << 8) | ( b << 16) | (a << 24);
if ( ID_aux == ID ){
- copiar(dato, (param_cte_t**)&str);
+ /* TODO : la copia es byte a byte. Al archivo
+ * no le importa que tipo de estructura es
+ */
+ //copiar(dato, &str);
break;
}
- iterador += sizeof(dato);
+ // FIXME : El tamaño del registro es lo que debo tener
+ // aca, no el tamaño del tipo de dato.
+ //
+ // Cuando se crea el archivo se le da el tamaño de un registro
+ //iterador += sizeof(dato);
}
fclose(block_reg);
fclose(block_free);
return -1;
}
-int copiar(struct param_cte_t dato, param_cte_t** str)
-{
- if ((*str) == NULL) return 0;
- (*str)->ID == dato.ID;
- strcpy((*str)->num_fac,dato.num_fac);
- strcpy((*str)->fecha_emision,dato.fecha_emision);
- strcpy((*str)->fecha_vto,dato.fecha_vto);
- strcpy((*str)->num_fac,dato.num_fac);
- strcpy((*str)->num_remito,dato.num_remito);
- strcpy((*str)->estado,dato.estado);
- strcpy((*str)->FP,dato.FP);
- strcpy((*str)->Por_DoI,dato.Por_DoI);
- strcpy((*str)->num_cta_cte,dato.num_cta_cte);
- strcpy((*str)->num_cheque,dato.num_cheque);
- (*str)->texto = dato.texto;
- return 1;
-}
-
int leer_bloque(int ID, void* str, unsigned long tam)
{