Fork us on GitHub Follow us on Facebook Follow us on Twitter

Changeset c56c4576 in mainline for uspace/srv/fs/exfat/exfat_ops.c


Ignore:
Timestamp:
2011-08-18T18:09:11Z (10 years ago)
Author:
Oleg Romanenko <romanenko.oleg@…>
Branches:
lfn, master
Children:
7234617
Parents:
602c3d8c
Message:

exFAT: fixes to support big endian. Tested on mips32 EB

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/fs/exfat/exfat_ops.c

    r602c3d8c rc56c4576  
    125125                df.attr = 0;
    126126
    127         ds.firstc = host2uint32_t_le(node->firstc);
     127        ds.firstc = node->firstc;
    128128        if (node->size == 0 && node->firstc == 0) {
    129129                ds.flags = 0;
     
    132132                ds.flags |= (!node->fragmented << 1);
    133133        }
    134         ds.valid_data_size = host2uint64_t_le(node->size);
    135         ds.data_size = host2uint64_t_le(node->size);
     134        ds.valid_data_size = node->size;
     135        ds.data_size = node->size;
    136136
    137137        exfat_directory_open_parent(&di, node->idx->devmap_handle, node->idx->pfc,
     
    335335        switch (exfat_classify_dentry(d)) {
    336336        case EXFAT_DENTRY_FILE:
    337                 nodep->type = (d->file.attr & EXFAT_ATTR_SUBDIR)?
     337                nodep->type = (uint16_t_le2host(d->file.attr) & EXFAT_ATTR_SUBDIR)?
    338338                    EXFAT_DIRECTORY : EXFAT_FILE;
    339339                rc = exfat_directory_next(&di);
     
    349349                        return rc;
    350350                }
    351                 nodep->firstc = d->stream.firstc;
    352                 nodep->size = d->stream.data_size;
     351                nodep->firstc = uint32_t_le2host(d->stream.firstc);
     352                nodep->size = uint64_t_le2host(d->stream.data_size);
    353353                nodep->fragmented = (d->stream.flags & 0x02) == 0;
    354354                break;
    355355        case EXFAT_DENTRY_BITMAP:
    356356                nodep->type = EXFAT_BITMAP;
    357                 nodep->firstc = d->bitmap.firstc;
    358                 nodep->size = d->bitmap.size;
     357                nodep->firstc = uint32_t_le2host(d->bitmap.firstc);
     358                nodep->size = uint64_t_le2host(d->bitmap.size);
    359359                nodep->fragmented = true;
    360360                break;
    361361        case EXFAT_DENTRY_UCTABLE:
    362362                nodep->type = EXFAT_UCTABLE;
    363                 nodep->firstc = d->uctable.firstc;
    364                 nodep->size = d->uctable.size;
     363                nodep->firstc = uint32_t_le2host(d->uctable.firstc);
     364                nodep->size = uint64_t_le2host(d->uctable.size);
    365365                nodep->fragmented = true;
    366366                break;
     
    10741074
    10751075        bitmapp->type = EXFAT_BITMAP;
    1076         bitmapp->firstc = de->bitmap.firstc;
     1076        bitmapp->firstc = uint32_t_le2host(de->bitmap.firstc);
    10771077        bitmapp->fragmented = true;
    10781078        bitmapp->idx->parent_fragmented = true;
    10791079        bitmapp->refcnt = 1;
    10801080        bitmapp->lnkcnt = 0;
    1081         bitmapp->size = de->bitmap.size;
     1081        bitmapp->size = uint64_t_le2host(de->bitmap.size);
    10821082
    10831083        /* Initialize the uctable node. */
     
    11161116
    11171117        uctablep->type = EXFAT_UCTABLE;
    1118         uctablep->firstc = de->uctable.firstc;
     1118        uctablep->firstc = uint32_t_le2host(de->uctable.firstc);
    11191119        uctablep->fragmented = true;
    11201120        uctablep->idx->parent_fragmented = true;
    11211121        uctablep->refcnt = 1;
    11221122        uctablep->lnkcnt = 0;
    1123         uctablep->size = de->uctable.size;
     1123        uctablep->size = uint64_t_le2host(de->uctable.size);
    11241124
    11251125        rc = exfat_directory_close(&di);
Note: See TracChangeset for help on using the changeset viewer.