Changeset a54af66 in mainline


Ignore:
Timestamp:
2011-02-23T18:21:55Z (13 years ago)
Author:
Martin Sucha <sucha14@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
ad34feb
Parents:
f483a15
Message:

More strict inode type checking

Location:
uspace
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • uspace/app/ext2info/ext2info.c

    rf483a15 ra54af66  
    346346{
    347347        uint32_t mode;
     348        uint32_t mode_type;
    348349        uint32_t user_id;
    349350        uint32_t group_id;
     
    358359       
    359360        mode = ext2_inode_get_mode(fs->superblock, inode);
     361        mode_type = mode & EXT2_INODE_MODE_TYPE_MASK;
    360362        user_id = ext2_inode_get_user_id(fs->superblock, inode);
    361363        group_id = ext2_inode_get_group_id(fs->superblock, inode);
     
    365367       
    366368        type = "Unknown";
    367         if ((mode & EXT2_INODE_MODE_BLOCKDEV) == EXT2_INODE_MODE_BLOCKDEV) {
     369        if (mode_type == EXT2_INODE_MODE_BLOCKDEV) {
    368370                type = "Block device";
    369371        }
    370         else if (mode & EXT2_INODE_MODE_FIFO) {
     372        else if (mode_type == EXT2_INODE_MODE_FIFO) {
    371373                type = "Fifo (pipe)";
    372374        }
    373         else if (mode & EXT2_INODE_MODE_CHARDEV) {
     375        else if (mode_type == EXT2_INODE_MODE_CHARDEV) {
    374376                type = "Character device";
    375377        }
    376         else if (mode & EXT2_INODE_MODE_DIRECTORY) {
     378        else if (mode_type == EXT2_INODE_MODE_DIRECTORY) {
    377379                type = "Directory";
    378380        }
    379         else if (mode & EXT2_INODE_MODE_FILE) {
     381        else if (mode_type == EXT2_INODE_MODE_FILE) {
    380382                type = "File";
    381383        }
    382         else if (mode & EXT2_INODE_MODE_SOFTLINK) {
     384        else if (mode_type == EXT2_INODE_MODE_SOFTLINK) {
    383385                type = "Soft link";
    384386        }
    385         else if (mode & EXT2_INODE_MODE_SOCKET) {
     387        else if (mode_type == EXT2_INODE_MODE_SOCKET) {
    386388                type = "Socket";
    387389        }
  • uspace/lib/ext2/libext2_inode.c

    rf483a15 ra54af66  
    5454
    5555/**
     56 * Check whether inode is of given type
     57 *
     58 * @param sb pointer to superblock structure
     59 * @param inode pointer to inode
     60 * @param type EXT2_INODE_MODE_TYPE_* constant to check
     61 */
     62inline bool ext2_inode_is_type(ext2_superblock_t *sb, ext2_inode_t *inode, uint32_t type)
     63{
     64        uint32_t mode = ext2_inode_get_mode(sb, inode);
     65        return (mode & EXT2_INODE_MODE_TYPE_MASK) == type;
     66}
     67
     68/**
    5669 * Get uid this inode is belonging to
    5770 *
     
    7992{
    8093        uint32_t major_rev = ext2_superblock_get_rev_major(sb);
    81         uint32_t mode = ext2_inode_get_mode(sb, inode);
    8294       
    83         if (major_rev > 0 && mode & EXT2_INODE_MODE_FILE) {
     95        if (major_rev > 0 && ext2_inode_is_type(sb, inode, EXT2_INODE_MODE_FILE)) {
    8496                return ((uint64_t)uint32_t_le2host(inode->size_high)) << 32 |
    8597                    ((uint64_t)uint32_t_le2host(inode->size));
  • uspace/lib/ext2/libext2_inode.h

    rf483a15 ra54af66  
    7474#define EXT2_INODE_MODE_SOCKET          0xC000
    7575#define EXT2_INODE_MODE_ACCESS_MASK     0x0FFF
     76#define EXT2_INODE_MODE_TYPE_MASK       0xF000
    7677
    7778typedef struct ext2_inode_ref {
     
    8182
    8283inline uint32_t ext2_inode_get_mode(ext2_superblock_t *, ext2_inode_t *);
     84inline bool ext2_inode_is_type(ext2_superblock_t *, ext2_inode_t *, uint32_t);
    8385inline uint32_t ext2_inode_get_user_id(ext2_superblock_t *, ext2_inode_t *);
    8486inline uint64_t ext2_inode_get_size(ext2_superblock_t *, ext2_inode_t *);
Note: See TracChangeset for help on using the changeset viewer.