VirtualBox

Changeset 66762 in vbox for trunk/src/VBox/Runtime/common/fs


Ignore:
Timestamp:
May 3, 2017 10:20:16 PM (8 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
115174
Message:

iprt: More vfs bits.

Location:
trunk/src/VBox/Runtime/common/fs
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Runtime/common/fs/fatvfs.cpp

    r66742 r66762  
    5151#include <iprt/zero.h>
    5252#include <iprt/formats/fat.h>
     53
     54#include "internal/fs.h"
    5355
    5456
     
    14581460    pObj->offEntryInDir     = offEntryInDir;
    14591461    pObj->fAttrib           = ((RTFMODE)pDirEntry->fAttrib << RTFS_DOS_SHIFT) & RTFS_DOS_MASK_OS2;
     1462    pObj->fAttrib           = rtFsModeFromDos(pObj->fAttrib, (char *)&pDirEntry->achName[0], sizeof(pDirEntry->achName), 0);
    14601463    pObj->cbObject          = pDirEntry->cbFile;
    14611464    pObj->fMaybeDirtyFat    = false;
     
    34813484
    34823485/**
     3486 * @interface_method_impl{RTVFSDIROPS,pfnQueryEntryInfo}
     3487 */
     3488static DECLCALLBACK(int) rtFsFatDir_QueryEntryInfo(void *pvThis, const char *pszEntry,
     3489                                                   PRTFSOBJINFO pObjInfo, RTFSOBJATTRADD enmAddAttr)
     3490{
     3491    /*
     3492     * Try locate the entry.
     3493     */
     3494    PRTFSFATDIR pThis = (PRTFSFATDIR)pvThis;
     3495    uint32_t    offEntryInDir;
     3496    bool        fLong;
     3497    FATDIRENTRY DirEntry;
     3498    int rc = rtFsFatDir_FindEntry(pThis, pszEntry, &offEntryInDir, &fLong, &DirEntry);
     3499    Log2(("rtFsFatDir_QueryEntryInfo: FindEntry(,%s,) -> %Rrc\n", pszEntry, rc));
     3500    if (RT_SUCCESS(rc))
     3501    {
     3502        /*
     3503         * To avoid duplicating code in rtFsFatObj_InitFromDirRec and
     3504         * rtFsFatObj_QueryInfo, we create a dummy RTFSFATOBJ on the stack.
     3505         */
     3506        RTFSFATOBJ TmpObj;
     3507        RT_ZERO(TmpObj);
     3508        rtFsFatObj_InitFromDirEntry(&TmpObj, &DirEntry, offEntryInDir, pThis->Core.pVol);
     3509        rc = rtFsFatObj_QueryInfo(&TmpObj, pObjInfo, enmAddAttr);
     3510    }
     3511    return rc;
     3512}
     3513
     3514
     3515/**
    34833516 * @interface_method_impl{RTVFSDIROPS,pfnUnlinkEntry}
    34843517 */
     
    34863519{
    34873520    RT_NOREF(pvThis, pszEntry, fType);
     3521RTAssertMsg2("%s: %s\n", __FUNCTION__, pszEntry);
     3522    return VERR_NOT_IMPLEMENTED;
     3523}
     3524
     3525
     3526/**
     3527 * @interface_method_impl{RTVFSDIROPS,pfnRenameEntry}
     3528 */
     3529static DECLCALLBACK(int) rtFsFatDir_RenameEntry(void *pvThis, const char *pszEntry, RTFMODE fType, const char *pszNewName)
     3530{
     3531    RT_NOREF(pvThis, pszEntry, fType, pszNewName);
    34883532RTAssertMsg2("%s: %s\n", __FUNCTION__, pszEntry);
    34893533    return VERR_NOT_IMPLEMENTED;
     
    35433587    rtFsFatDir_OpenSymlink,
    35443588    rtFsFatDir_CreateSymlink,
     3589    rtFsFatDir_QueryEntryInfo,
    35453590    rtFsFatDir_UnlinkEntry,
     3591    rtFsFatDir_RenameEntry,
    35463592    rtFsFatDir_RewindDir,
    35473593    rtFsFatDir_ReadDir,
     
    36643710            rtFsFatObj_InitFromDirEntry(&pNewDir->Core, pDirEntry, offEntryInDir, pThis);
    36653711        else
    3666             rtFsFatObj_InitDummy(&pNewDir->Core, cbDir, RTFS_DOS_DIRECTORY, pThis);
     3712            rtFsFatObj_InitDummy(&pNewDir->Core, cbDir, RTFS_TYPE_DIRECTORY | RTFS_DOS_DIRECTORY | RTFS_UNIX_ALL_PERMS, pThis);
    36673713
    36683714        pNewDir->hVfsSelf           = *phVfsDir;
  • trunk/src/VBox/Runtime/common/fs/iso9660vfs.cpp

    r66742 r66762  
    937937 */
    938938static DECLCALLBACK(int) rtFsIso9660Dir_CreateSymlink(void *pvThis, const char *pszSymlink, const char *pszTarget,
    939                                                   RTSYMLINKTYPE enmType, PRTVFSSYMLINK phVfsSymlink)
     939                                                      RTSYMLINKTYPE enmType, PRTVFSSYMLINK phVfsSymlink)
    940940{
    941941    RT_NOREF(pvThis, pszSymlink, pszTarget, enmType, phVfsSymlink);
     
    945945
    946946/**
     947 * @interface_method_impl{RTVFSDIROPS,pfnQueryEntryInfo}
     948 */
     949static DECLCALLBACK(int) rtFsIso9660Dir_QueryEntryInfo(void *pvThis, const char *pszEntry,
     950                                                       PRTFSOBJINFO pObjInfo, RTFSOBJATTRADD enmAddAttr)
     951{
     952    /*
     953     * Try locate the entry.
     954     */
     955    PRTFSISO9660DIR pThis = (PRTFSISO9660DIR)pvThis;
     956    PCISO9660DIRREC pDirRec;
     957    uint64_t        offDirRec;
     958    uint32_t        cDirRecs;
     959    RTFMODE         fMode;
     960    int rc = rtFsIso9660Dir_FindEntry(pThis, pszEntry, &offDirRec, &pDirRec, &cDirRecs, &fMode);
     961    Log2(("rtFsIso9660Dir_QueryEntryInfo: FindEntry(,%s,) -> %Rrc\n", pszEntry, rc));
     962    if (RT_SUCCESS(rc))
     963    {
     964        /*
     965         * To avoid duplicating code in rtFsIso9660Obj_InitFromDirRec and
     966         * rtFsIso9660Obj_QueryInfo, we create a dummy RTFSISO9660OBJ on the stack.
     967         */
     968        RTFSISO9660OBJ TmpObj;
     969        RT_ZERO(TmpObj);
     970        rtFsIso9660Obj_InitFromDirRec(&TmpObj, pDirRec, cDirRecs, offDirRec, pThis->Core.pVol);
     971        rc = rtFsIso9660Obj_QueryInfo(&TmpObj, pObjInfo, enmAddAttr);
     972    }
     973    return rc;
     974}
     975
     976
     977/**
    947978 * @interface_method_impl{RTVFSDIROPS,pfnUnlinkEntry}
    948979 */
     
    950981{
    951982    RT_NOREF(pvThis, pszEntry, fType);
     983    return VERR_WRITE_PROTECT;
     984}
     985
     986
     987/**
     988 * @interface_method_impl{RTVFSDIROPS,pfnRenameEntry}
     989 */
     990static DECLCALLBACK(int) rtFsIso9660Dir_RenameEntry(void *pvThis, const char *pszEntry, RTFMODE fType, const char *pszNewName)
     991{
     992    RT_NOREF(pvThis, pszEntry, fType, pszNewName);
    952993    return VERR_WRITE_PROTECT;
    953994}
     
    10061047    rtFsIso9660Dir_OpenSymlink,
    10071048    rtFsIso9660Dir_CreateSymlink,
     1049    rtFsIso9660Dir_QueryEntryInfo,
    10081050    rtFsIso9660Dir_UnlinkEntry,
     1051    rtFsIso9660Dir_RenameEntry,
    10091052    rtFsIso9660Dir_RewindDir,
    10101053    rtFsIso9660Dir_ReadDir,
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