X-Git-Url: https://git.llucax.com/z.facultad/75.06/emufs.git/blobdiff_plain/9dc122f5b0fdf868ce5945f63e7835701595c4e2..3a2ac69d9954f9c35eeaa4092433e06a243aa55e:/tipo3/param_cte.c diff --git a/tipo3/param_cte.c b/tipo3/param_cte.c index 9a05adb..918dbcd 100644 --- a/tipo3/param_cte.c +++ b/tipo3/param_cte.c @@ -9,10 +9,17 @@ FILE* reg_exist; /** 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; + /* 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 ) @@ -31,17 +38,25 @@ int leer_registro(int ID, void *str, unsigned long tam) 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 + */ + //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); @@ -59,7 +74,7 @@ int existe_registro(int ID) 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; @@ -77,7 +92,7 @@ int buscar_registro(int ID) 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; @@ -88,25 +103,7 @@ int buscar_registro(int ID) 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) { - + return 0; }