VirtualBox

Ignore:
Timestamp:
May 26, 2017 12:51:18 PM (8 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
115783
Message:

IPRT: Started on VFS file system output streams for implementing TAR creation.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Runtime/common/vfs/vfsbase.cpp

    r66767 r67116  
    19141914
    19151915
    1916 RTDECL(int) RTVfsNewFsStream(PCRTVFSFSSTREAMOPS pFsStreamOps, size_t cbInstance, RTVFS hVfs, RTVFSLOCK hLock,
     1916RTDECL(int) RTVfsNewFsStream(PCRTVFSFSSTREAMOPS pFsStreamOps, size_t cbInstance, RTVFS hVfs, RTVFSLOCK hLock, bool fReadOnly,
    19171917                             PRTVFSFSSTREAM phVfsFss, void **ppvInstance)
    19181918{
     
    19251925    Assert(!pFsStreamOps->fReserved);
    19261926    RTVFSOBJ_ASSERT_OPS(&pFsStreamOps->Obj, RTVFSOBJTYPE_FS_STREAM);
    1927     AssertPtr(pFsStreamOps->pfnNext);
     1927    if (fReadOnly)
     1928        AssertPtr(pFsStreamOps->pfnNext);
     1929    else
     1930        AssertPtr(pFsStreamOps->pfnAdd);
    19281931    Assert(cbInstance > 0);
    19291932    AssertPtr(ppvInstance);
     
    19501953
    19511954    pThis->uMagic = RTVFSFSSTREAM_MAGIC;
    1952     pThis->fFlags = RTFILE_O_READ | RTFILE_O_OPEN | RTFILE_O_DENY_NONE;
     1955    pThis->fFlags = fReadOnly
     1956                  ? RTFILE_O_READ  | RTFILE_O_OPEN   | RTFILE_O_DENY_NONE
     1957                  : RTFILE_O_WRITE | RTFILE_O_CREATE | RTFILE_O_DENY_ALL;
    19531958    pThis->pOps   = pFsStreamOps;
    19541959
     
    20182023        *phVfsObj = NIL_RTVFSOBJ;
    20192024
     2025    AssertReturn(pThis->fFlags & RTFILE_O_READ, VERR_INVALID_FUNCTION);
     2026
    20202027    return pThis->pOps->pfnNext(pThis->Base.pvThis, ppszName, penmType, phVfsObj);
    20212028}
    20222029
     2030
     2031RTDECL(int)         RTVfsFsStrmAdd(RTVFSFSSTREAM hVfsFss, const char *pszPath, RTVFSOBJ hVfsObj, uint32_t fFlags)
     2032{
     2033    RTVFSFSSTREAMINTERNAL *pThis = hVfsFss;
     2034    AssertPtrReturn(pThis, VERR_INVALID_HANDLE);
     2035    AssertReturn(pThis->uMagic == RTVFSFSSTREAM_MAGIC, VERR_INVALID_HANDLE);
     2036    AssertPtrNullReturn(pszPath, VERR_INVALID_POINTER);
     2037    AssertPtrReturn(hVfsObj, VERR_INVALID_HANDLE);
     2038    AssertReturn(hVfsObj->uMagic == RTVFSOBJ_MAGIC, VERR_INVALID_HANDLE);
     2039    AssertReturn(pThis->fFlags & RTFILE_O_WRITE, VERR_INVALID_FUNCTION);
     2040
     2041    return pThis->pOps->pfnAdd(pThis->Base.pvThis, pszPath, hVfsObj, fFlags);
     2042}
    20232043
    20242044
Note: See TracChangeset for help on using the changeset viewer.

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