VirtualBox

Changeset 85218 in vbox for trunk/src/VBox/Main


Ignore:
Timestamp:
Jul 11, 2020 2:09:04 PM (5 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
139195
Message:

Main/VFSExplorerImpl.cpp: Corrected totally messed up i_iprtToVfsObjType code. Use RTFOFF for the DirEntry size to avoid sign conversion non-sense. bugref:9790

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Main/src-server/VFSExplorerImpl.cpp

    r82968 r85218  
    4242    struct DirEntry
    4343    {
    44         DirEntry(Utf8Str strName, FsObjType_T fileType, uint64_t cbSize, uint32_t fMode)
     44        DirEntry(Utf8Str strName, FsObjType_T fileType, RTFOFF cbSize, uint32_t fMode)
    4545           : name(strName)
    4646           , type(fileType)
     
    5050        Utf8Str name;
    5151        FsObjType_T type;
    52         uint64_t size;
     52        RTFOFF size;
    5353        uint32_t mode;
    5454    };
     
    252252FsObjType_T VFSExplorer::i_iprtToVfsObjType(RTFMODE aType) const
    253253{
    254     int a = aType & RTFS_TYPE_MASK;
    255     FsObjType_T t = FsObjType_Unknown;
    256     if ((a & RTFS_TYPE_DIRECTORY) == RTFS_TYPE_DIRECTORY)
    257         t = FsObjType_Directory;
    258     else if ((a & RTFS_TYPE_FILE) == RTFS_TYPE_FILE)
    259         t = FsObjType_File;
    260     else if ((a & RTFS_TYPE_SYMLINK) == RTFS_TYPE_SYMLINK)
    261         t = FsObjType_Symlink;
    262     else if ((a & RTFS_TYPE_FIFO) == RTFS_TYPE_FIFO)
    263         t = FsObjType_Fifo;
    264     else if ((a & RTFS_TYPE_DEV_CHAR) == RTFS_TYPE_DEV_CHAR)
    265         t = FsObjType_DevChar;
    266     else if ((a & RTFS_TYPE_DEV_BLOCK) == RTFS_TYPE_DEV_BLOCK)
    267         t = FsObjType_DevBlock;
    268     else if ((a & RTFS_TYPE_SOCKET) == RTFS_TYPE_SOCKET)
    269         t = FsObjType_Socket;
    270     else if ((a & RTFS_TYPE_WHITEOUT) == RTFS_TYPE_WHITEOUT)
    271         t = FsObjType_WhiteOut;
    272 
    273     return t;
     254    switch (aType & RTFS_TYPE_MASK)
     255    {
     256        case RTFS_TYPE_DIRECTORY:   return FsObjType_Directory;
     257        case RTFS_TYPE_FILE:        return FsObjType_File;
     258        case RTFS_TYPE_SYMLINK:     return FsObjType_Symlink;
     259        case RTFS_TYPE_FIFO:        return FsObjType_Fifo;
     260        case RTFS_TYPE_DEV_CHAR:    return FsObjType_DevChar;
     261        case RTFS_TYPE_DEV_BLOCK:   return FsObjType_DevBlock;
     262        case RTFS_TYPE_SOCKET:      return FsObjType_Socket;
     263        case RTFS_TYPE_WHITEOUT:    return FsObjType_WhiteOut;
     264        default:                    return FsObjType_Unknown;
     265    }
    274266}
    275267
     
    304296                        && name != "..")
    305297                        fileList.push_back(VFSExplorer::Data::DirEntry(name, i_iprtToVfsObjType(entry.Info.Attr.fMode),
    306                                            entry.Info.cbObject,
    307                                            entry.Info.Attr.fMode & (RTFS_UNIX_IRWXU | RTFS_UNIX_IRWXG | RTFS_UNIX_IRWXO)));
     298                                                                       entry.Info.cbObject,
     299                                                                         entry.Info.Attr.fMode
     300                                                                       & (RTFS_UNIX_IRWXU | RTFS_UNIX_IRWXG | RTFS_UNIX_IRWXO)));
    308301                }
    309302            }
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette