4 int emufs_fsc_agregar(EMUFS *emu, int num_bloque, int fs)
10 strcpy(name_f_fsc,emu->nombre);
11 strcat(name_f_fsc,".fsc");
14 reg.block = num_bloque;
16 /*lo guardo en el archivo al final "a+"*/
17 if ( (f_fsc = fopen(name_f_fsc,"a+"))==NULL ) return -1;
18 fwrite(®,sizeof(BLOCK_FREE_T),1,f_fsc);
23 /* busca el bloque y le resta fs de espacio libre */
24 int emufs_fsc_actualizar(EMUFS *emu, int num_bloque, int fs)
30 strcpy(name_f_fsc,emu->nombre);
31 strcat(name_f_fsc,".fsc");
33 /*busco el bloque que modifique*/
34 if ( (f_fsc = fopen(name_f_fsc,"r+")) == NULL) return -1;
35 while ( !feof(f_fsc) ){
36 if ( fread(®,sizeof(BLOCK_FREE_T),1,f_fsc) != 1) continue;
37 if ( reg.block == num_bloque ){
39 fseek(f_fsc,-sizeof(BLOCK_FREE_T),SEEK_CUR);
40 fwrite(®,sizeof(BLOCK_FREE_T),1,f_fsc);
48 /* me devuelve el ID del bloque donde quepa un registro, y guarda en fs el espacio libre que queda en el bloque */
49 int emufs_fsc_buscar_lugar(EMUFS *emu, unsigned long tam, int *fs)
55 strcpy(name_f_fsc,emu->nombre);
56 strcat(name_f_fsc,".fsc");
58 if ( (f_fsc = fopen(name_f_fsc,"r"))==NULL ) return -1;
60 /* Inicializo la estructura para evitar que si el archivo esta vacio
61 * el resultado sea correcto
64 *fs = emu->tam_bloque;
65 while( !feof(f_fsc) ){
66 if (fread(®,sizeof(BLOCK_FREE_T),1,f_fsc) != 1) continue;
67 if ( reg.free_space >= tam+sizeof(int))
71 *fs = emu->tam_bloque;
81 int emufs_fsc_get_fs(EMUFS *emu, int num_bloque)
87 strcpy(name_f_fsc,emu->nombre);
88 strcat(name_f_fsc,".fsc");
90 if ( (f_fsc = fopen(name_f_fsc,"r"))==NULL ) return -1;
92 while ( !feof(f_fsc) ){
93 if ( fread(®,sizeof(BLOCK_FREE_T),1,f_fsc) != 1 ) continue;
94 if ( reg.block == num_bloque )
99 return reg.free_space;