Subversion Repositories HelenOS

Rev

Rev 3521 | Rev 3530 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 3521 Rev 3526
Line 264... Line 264...
264
 
264
 
265
    futex_down(&parentp->idx->lock);
265
    futex_down(&parentp->idx->lock);
266
    bb = block_get(parentp->idx->dev_handle, BS_BLOCK, BS_SIZE);
266
    bb = block_get(parentp->idx->dev_handle, BS_BLOCK, BS_SIZE);
267
    bps = uint16_t_le2host(FAT_BS(bb)->bps);
267
    bps = uint16_t_le2host(FAT_BS(bb)->bps);
268
    dps = bps / sizeof(fat_dentry_t);
268
    dps = bps / sizeof(fat_dentry_t);
269
    blocks = parentp->size / bps + (parentp->size % bps != 0);
269
    blocks = parentp->size / bps;
270
    for (i = 0; i < blocks; i++) {
270
    for (i = 0; i < blocks; i++) {
271
        unsigned dentries;
-
 
272
       
-
 
273
        b = fat_block_get(bb->data, parentp, i);
271
        b = fat_block_get(bb->data, parentp, i);
274
        dentries = (i == blocks - 1) ?
-
 
275
            parentp->size % sizeof(fat_dentry_t) :
-
 
276
            dps;
-
 
277
        for (j = 0; j < dentries; j++) {
272
        for (j = 0; j < dps; j++) {
278
            d = ((fat_dentry_t *)b->data) + j;
273
            d = ((fat_dentry_t *)b->data) + j;
279
            switch (fat_classify_dentry(d)) {
274
            switch (fat_classify_dentry(d)) {
280
            case FAT_DENTRY_SKIP:
275
            case FAT_DENTRY_SKIP:
281
                continue;
276
                continue;
282
            case FAT_DENTRY_LAST:
277
            case FAT_DENTRY_LAST:
Line 353... Line 348...
353
    block_t *bb, *b;
348
    block_t *bb, *b;
354
    unsigned i, j;
349
    unsigned i, j;
355
 
350
 
356
    if (nodep->type != FAT_DIRECTORY)
351
    if (nodep->type != FAT_DIRECTORY)
357
        return false;
352
        return false;
358
 
353
   
359
    futex_down(&nodep->idx->lock);
354
    futex_down(&nodep->idx->lock);
360
    bb = block_get(nodep->idx->dev_handle, BS_BLOCK, BS_SIZE);
355
    bb = block_get(nodep->idx->dev_handle, BS_BLOCK, BS_SIZE);
361
    bps = uint16_t_le2host(FAT_BS(bb)->bps);
356
    bps = uint16_t_le2host(FAT_BS(bb)->bps);
362
    dps = bps / sizeof(fat_dentry_t);
357
    dps = bps / sizeof(fat_dentry_t);
363
 
358
 
364
    blocks = nodep->size / bps + (nodep->size % bps != 0);
359
    blocks = nodep->size / bps;
365
 
360
 
366
    for (i = 0; i < blocks; i++) {
361
    for (i = 0; i < blocks; i++) {
367
        unsigned dentries;
-
 
368
        fat_dentry_t *d;
362
        fat_dentry_t *d;
369
   
363
   
370
        b = fat_block_get(bb->data, nodep, i);
364
        b = fat_block_get(bb->data, nodep, i);
371
        dentries = (i == blocks - 1) ?
-
 
372
            nodep->size % sizeof(fat_dentry_t) :
-
 
373
            dps;
-
 
374
        for (j = 0; j < dentries; j++) {
365
        for (j = 0; j < dps; j++) {
375
            d = ((fat_dentry_t *)b->data) + j;
366
            d = ((fat_dentry_t *)b->data) + j;
376
            switch (fat_classify_dentry(d)) {
367
            switch (fat_classify_dentry(d)) {
377
            case FAT_DENTRY_SKIP:
368
            case FAT_DENTRY_SKIP:
378
                continue;
369
                continue;
379
            case FAT_DENTRY_LAST:
370
            case FAT_DENTRY_LAST: