* adfGetFreeBlocks * */
| 260 | * |
| 261 | */ |
| 262 | BOOL adfGetFreeBlocks(struct Volume* vol, int nbSect, SECTNUM* sectList) |
| 263 | { |
| 264 | int i, j; |
| 265 | BOOL diskFull; |
| 266 | int32_t block = vol->rootBlock; |
| 267 | |
| 268 | i = 0; |
| 269 | diskFull = FALSE; |
| 270 | /*printf("lastblock=%ld\n",vol->lastBlock);*/ |
| 271 | while( i<nbSect && !diskFull ) { |
| 272 | if ( adfIsBlockFree(vol, block) ) { |
| 273 | sectList[i] = block; |
| 274 | i++; |
| 275 | } |
| 276 | /* if ( block==vol->lastBlock ) |
| 277 | block = vol->firstBlock+2;*/ |
| 278 | if ( (block+vol->firstBlock)==vol->lastBlock ) |
| 279 | block = 2; |
| 280 | else if (block==vol->rootBlock-1) |
| 281 | diskFull = TRUE; |
| 282 | else |
| 283 | block++; |
| 284 | } |
| 285 | |
| 286 | if (!diskFull) |
| 287 | for(j=0; j<nbSect; j++) |
| 288 | adfSetBlockUsed( vol, sectList[j] ); |
| 289 | |
| 290 | return (i==nbSect); |
| 291 | } |
| 292 | |
| 293 | |
| 294 | /* |
no test coverage detected