/** Leo un registro del archivo, devuelve cero si no lo encuentra.**/
int leer_registro(int ID, void *str, unsigned long tam)
{
- struct t_param_cte dato;
+ /* FIXME : aca tam es el tamaño del registro, no del bloque!
+ *
+ * Aca deberias recibir una estructura EMUFS y de ahi sacar los datos
+ * del tamaño del bloque a leer.
+ *
+ * leer_registro(EMUFS, int, void*, unsigned long);
+ *
+ * Tambien ver que siempre que hay un return se libere toda la memoria!
+ */
char* bloque = (char*)malloc(tam);
- char ID_char[4];
- int block, i, ID_aux, a, b, c, d;
+ int block, 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, &str);
+ /* TODO : la copia es byte a byte. Al archivo
+ * no le importa que tipo de estructura es
+ */
+ //aca va el memcpy... HACER!!
+ //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 += tamanio_registro;
}
fclose(block_reg);
fclose(block_free);
char ex;
if ( (reg_exist = fopen("reg_exist.dat","r")) == NULL) return 0; /*ERROR*/
while ( !feof(reg_exist) ){
- fscanf(reg_exist,"%i%c",num,ex);
+ fscanf(reg_exist,"%i%c",&num,&ex);
if ( num == ID && ex == 'S' ){
fclose(reg_exist);
return 0;
int num_block, num_reg;
if ( (block_reg = fopen("block_reg.dat","r")) == NULL) return 0; /*ERROR*/
while ( !feof(block_reg) ){
- fscanf(block_reg,"%i%i",num_block,num_reg);
+ fscanf(block_reg,"%i%i",&num_block,&num_reg);
if ( num_reg == ID ){
fclose(block_reg);
return num_block;
return -1;
}
-int copiar(struct t_param_cte dato, void** 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)
{
-
+ return 0;
}