VirtualBox

Changeset 94291 in vbox for trunk/src/VBox/Runtime


Ignore:
Timestamp:
Mar 17, 2022 1:29:52 PM (3 years ago)
Author:
vboxsync
Message:

IPRT,Storage: Adding RTVfsQueryLabel and internally a generic pfnQueryInfoEx method to the RTVFSOBJOPS function table. Untested implementation of the latter for iso/udf. bugref:9781

Location:
trunk/src/VBox/Runtime/common
Files:
24 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Runtime/common/checksum/manifest3.cpp

    r93115 r94291  
    506506        rtManifestPtIos_Close,
    507507        rtManifestPtIos_QueryInfo,
     508        NULL,
    508509        RTVFSOBJOPS_VERSION
    509510    },
  • trunk/src/VBox/Runtime/common/dvm/dvmvfs.cpp

    r93115 r94291  
    485485            rtDvmVfsFile_Close,
    486486            rtDvmVfsFile_QueryInfo,
     487            NULL,
    487488            RTVFSOBJOPS_VERSION
    488489        },
     
    643644        rtDvmVfsSym_Close,
    644645        rtDvmVfsSym_QueryInfo,
     646        NULL,
    645647        RTVFSOBJOPS_VERSION
    646648    },
     
    12161218        rtDvmVfsDir_Close,
    12171219        rtDvmVfsDir_QueryInfo,
     1220        NULL,
    12181221        RTVFSOBJOPS_VERSION
    12191222    },
     
    13121315        rtDvmVfsVol_Close,
    13131316        rtDvmVfsVol_QueryInfo,
     1317        NULL,
    13141318        RTVFSOBJOPS_VERSION
    13151319    },
  • trunk/src/VBox/Runtime/common/efi/efivarstorevfs.cpp

    r93283 r94291  
    12671267            rtEfiVarStoreFile_Close,
    12681268            rtEfiVarStoreFile_QueryInfo,
     1269            NULL,
    12691270            RTVFSOBJOPS_VERSION
    12701271        },
     
    18511852        rtEfiVarStoreDir_Close,
    18521853        rtEfiVarStoreDir_QueryInfo,
     1854        NULL,
    18531855        RTVFSOBJOPS_VERSION
    18541856    },
     
    20182020        /* .pfnClose = */       rtEfiVarStore_Close,
    20192021        /* .pfnQueryInfo = */   rtEfiVarStore_QueryInfo,
     2022        /* .pfnQueryInfoEx = */ NULL,
    20202023        /* .uEndMarker = */     RTVFSOBJOPS_VERSION
    20212024    },
  • trunk/src/VBox/Runtime/common/fs/extvfs.cpp

    r93115 r94291  
    19101910            rtFsExtFile_Close,
    19111911            rtFsExtFile_QueryInfo,
     1912            NULL,
    19121913            RTVFSOBJOPS_VERSION
    19131914        },
     
    23382339        rtFsExtDir_Close,
    23392340        rtFsExtDir_QueryInfo,
     2341        NULL,
    23402342        RTVFSOBJOPS_VERSION
    23412343    },
     
    25752577        /* .pfnClose = */       rtFsExtVol_Close,
    25762578        /* .pfnQueryInfo = */   rtFsExtVol_QueryInfo,
     2579        /* .pfnQueryInfoEx = */ NULL,
    25772580        /* .uEndMarker = */     RTVFSOBJOPS_VERSION
    25782581    },
  • trunk/src/VBox/Runtime/common/fs/fatvfs.cpp

    r93115 r94291  
    25662566            rtFsFatFile_Close,
    25672567            rtFsFatFile_QueryInfo,
     2568            NULL,
    25682569            RTVFSOBJOPS_VERSION
    25692570        },
     
    46354636        rtFsFatDir_Close,
    46364637        rtFsFatDir_QueryInfo,
     4638        NULL,
    46374639        RTVFSOBJOPS_VERSION
    46384640    },
     
    50015003        rtFsFatVol_Close,
    50025004        rtFsFatVol_QueryInfo,
     5005        NULL,
    50035006        RTVFSOBJOPS_VERSION
    50045007    },
  • trunk/src/VBox/Runtime/common/fs/isomaker.cpp

    r93118 r94291  
    74547454            rtFsIsoMakerOutFile_Close,
    74557455            rtFsIsoMakerOutFile_QueryInfo,
     7456            NULL,
    74567457            RTVFSOBJOPS_VERSION
    74577458        },
  • trunk/src/VBox/Runtime/common/fs/isovfs.cpp

    r94282 r94291  
    131131        { \
    132132            PCRTUTF16 pwszTmp = (PCRTUTF16)&(a_pStruct)->a_Member[1]; \
    133             char *pszTmp = NULL; \
     133            char     *pszTmp = NULL; \
    134134            RTUtf16BigToUtf8Ex(pwszTmp, (sizeof((a_pStruct)->a_Member) - 2) / sizeof(RTUTF16), &pszTmp, 0, NULL); \
    135135            Log2(("ISO/UDF:   %-32s 16: '%s' len=%u (actual=%u)\n", #a_Member ":", pszTmp, \
    136136                  (a_pStruct)->a_Member[sizeof((a_pStruct)->a_Member) - 1], \
    137137                  RTUtf16NLen(pwszTmp, (sizeof((a_pStruct)->a_Member) - 2) / sizeof(RTUTF16)) * sizeof(RTUTF16) + 1 /*??*/ )); \
     138            RTStrFree(pszTmp); \
    138139        } \
    139140        else if (ASMMemIsZero(&(a_pStruct)->a_Member[0], sizeof((a_pStruct)->a_Member))) \
     
    427428typedef enum RTFSISOVOLTYPE
    428429{
     430    /** Invalid zero value.   */
     431    RTFSISOVOLTYPE_INVALID = 0,
    429432    /** Accessing the primary ISO-9660 volume. */
    430     RTFSISOVOLTYPE_ISO9960 = 0,
     433    RTFSISOVOLTYPE_ISO9960,
    431434    /** Accessing the joliet volume (secondary ISO-9660). */
    432435    RTFSISOVOLTYPE_JOLIET,
     
    467470    /** The primary volume sequence ID. */
    468471    uint32_t            idPrimaryVol;
     472    /** The offset of the primary volume descriptor. */
     473    uint32_t            offPrimaryVolDesc;
     474    /** The offset of the secondary volume descriptor. */
     475    uint32_t            offSecondaryVolDesc;
    469476    /** Set if using UTF16-2 (joliet). */
    470477    bool                fIsUtf16;
     
    22952302            rtFsIsoFile_Close,
    22962303            rtFsIsoFile_QueryInfo,
     2304            NULL,
    22972305            RTVFSOBJOPS_VERSION
    22982306        },
     
    43794387        rtFsIsoDir_Close,
    43804388        rtFsIsoDir_QueryInfo,
     4389        NULL,
    43814390        RTVFSOBJOPS_VERSION
    43824391    },
     
    48854894
    48864895
     4896static int rtFsIsoVol_ReturnUdfDString(const char *pachSrc, size_t cchSrc, void *pvDst, size_t cbDst, size_t *pcbRet)
     4897{
     4898    char *pszDst = (char *)pvDst;
     4899
     4900    if (pachSrc[0] == 8)
     4901    {
     4902        uint8_t const cchText   = RT_MIN((uint8_t)pachSrc[cchSrc - 1], cchSrc - 2);
     4903        size_t  const cchActual = RTStrNLen(&pachSrc[1], cchText);
     4904        *pcbRet = cchActual + 1;
     4905        int rc = RTStrCopyEx(pszDst, cbDst, &pachSrc[1], cchActual);
     4906        if (cbDst > 0)
     4907            RTStrPurgeEncoding(pszDst);
     4908        return rc;
     4909    }
     4910
     4911    if (pachSrc[0] == 16)
     4912    {
     4913        PCRTUTF16 pwszSrc = (PCRTUTF16)&pachSrc[1];
     4914        if (cchSrc > 0)
     4915            return RTUtf16BigToUtf8Ex(pwszSrc, (cchSrc - 2) / sizeof(RTUTF16), &pszDst, cchSrc, pcbRet);
     4916        int rc = RTUtf16CalcUtf8LenEx(pwszSrc, (cchSrc - 2) / sizeof(RTUTF16), pcbRet);
     4917        if (RT_SUCCESS(rc))
     4918        {
     4919            *pcbRet += 1;
     4920            return VERR_BUFFER_OVERFLOW;
     4921        }
     4922        return rc;
     4923    }
     4924
     4925    if (ASMMemIsZero(pachSrc, cchSrc))
     4926    {
     4927        *pcbRet = 1;
     4928        if (cbDst >= 1)
     4929        {
     4930            *pszDst = '\0';
     4931            return VINF_SUCCESS;
     4932        }
     4933        return VERR_BUFFER_OVERFLOW;
     4934    }
     4935
     4936    *pcbRet = 0;
     4937    return VERR_INVALID_UTF8_ENCODING; /** @todo better status here */
     4938}
     4939
     4940
     4941/**
     4942 * For now this is a sanitized version of rtFsIsoVolGetMaybeUtf16Be, which is
     4943 * probably not correct or anything, but will have to do for now.
     4944 */
     4945static int rtFsIsoVol_ReturnIso9660D1String(const char *pachSrc, size_t cchSrc, void *pvDst, size_t cbDst, size_t *pcbRet)
     4946{
     4947    char *pszDst = (char *)pvDst;
     4948
     4949    /*
     4950     * Check if it may be some UTF16 variant by scanning for zero bytes
     4951     * (ISO-9660 doesn't allow zeros).
     4952     */
     4953    size_t cFirstZeros  = 0;
     4954    size_t cSecondZeros = 0;
     4955    for (size_t off = 0; off + 1 < cchSrc; off += 2)
     4956    {
     4957        cFirstZeros  += pachSrc[off]     == '\0';
     4958        cSecondZeros += pachSrc[off + 1] == '\0';
     4959    }
     4960    if (cFirstZeros > cSecondZeros)
     4961    {
     4962        /*
     4963         * UTF-16BE / UTC-2BE:
     4964         */
     4965        if (cchSrc & 1)
     4966        {
     4967            AssertReturn(pachSrc[cchSrc - 1] == '\0' || pachSrc[cchSrc - 1] == ' ', VERR_INVALID_UTF16_ENCODING);
     4968            cchSrc--;
     4969        }
     4970        while (   cchSrc >= 2
     4971               && pachSrc[cchSrc - 1] == ' '
     4972               && pachSrc[cchSrc - 2] == '\0')
     4973            cchSrc -= 2;
     4974
     4975        if (cbDst > 0)
     4976            return RTUtf16BigToUtf8Ex((PCRTUTF16)pachSrc, cchSrc / sizeof(RTUTF16), &pszDst, cbDst, pcbRet);
     4977        int rc = RTUtf16BigCalcUtf8LenEx((PCRTUTF16)pachSrc, cchSrc / sizeof(RTUTF16), pcbRet);
     4978        if (RT_SUCCESS(rc))
     4979        {
     4980            *pcbRet += 1;
     4981            return VERR_BUFFER_OVERFLOW;
     4982        }
     4983        return rc;
     4984    }
     4985
     4986    if (cSecondZeros > 0)
     4987    {
     4988        /*
     4989         * Little endian UTF-16 / UCS-2.
     4990         */
     4991        if (cchSrc & 1)
     4992        {
     4993            AssertReturn(pachSrc[cchSrc - 1] == '\0' || pachSrc[cchSrc - 1] == ' ', VERR_INVALID_UTF16_ENCODING);
     4994            cchSrc--;
     4995        }
     4996        while (   cchSrc >= 2
     4997               && pachSrc[cchSrc - 1] == '\0'
     4998               && pachSrc[cchSrc - 2] == ' ')
     4999            cchSrc -= 2;
     5000
     5001        if (cbDst)
     5002            return RTUtf16LittleToUtf8Ex((PCRTUTF16)pachSrc, cchSrc / sizeof(RTUTF16), &pszDst, cbDst, pcbRet);
     5003        int rc = RTUtf16LittleCalcUtf8LenEx((PCRTUTF16)pachSrc, cchSrc / sizeof(RTUTF16), pcbRet);
     5004        if (RT_SUCCESS(rc))
     5005        {
     5006            *pcbRet += 1;
     5007            return VERR_BUFFER_OVERFLOW;
     5008        }
     5009        return rc;
     5010    }
     5011
     5012    /*
     5013     * ASSUME UTF-8/ASCII.
     5014     */
     5015    while (   cchSrc > 0
     5016           && pachSrc[cchSrc - 1] == ' ')
     5017        cchSrc--;
     5018
     5019    *pcbRet = cchSrc + 1;
     5020    int rc = RTStrCopyEx(pszDst, cbDst, pachSrc, cchSrc);
     5021    if (cbDst > 0)
     5022        RTStrPurgeEncoding(pszDst);
     5023    return rc;
     5024}
     5025
     5026
     5027static int rtFsIsoVol_ReturnIso9660DString(const char *pachSrc, size_t cchSrc, void *pvDst, size_t cbDst, size_t *pcbRet)
     5028{
     5029    /* Lazy bird: */
     5030    return rtFsIsoVol_ReturnIso9660D1String(pachSrc, cchSrc, pvDst, cbDst, pcbRet);
     5031}
     5032
     5033
     5034/**
     5035 * @interface_method_impl{RTVFSOBJOPS::Obj,pfnQueryInfoEx}
     5036 */
     5037static DECLCALLBACK(int) rtFsIsoVol_QueryInfoEx(void *pvThis, RTVFSQIEX enmInfo, void *pvInfo, size_t cbInfo, size_t *pcbRet)
     5038{
     5039    PRTFSISOVOL pThis = (PRTFSISOVOL)pvThis;
     5040    LogFlow(("rtFsIsoVol_QueryInfo(%p, %d,, %#zx,)\n", pThis, enmInfo, cbInfo));
     5041
     5042    union
     5043    {
     5044        uint8_t                 ab[RTFSISO_MAX_LOGICAL_BLOCK_SIZE];
     5045        ISO9660PRIMARYVOLDESC   PriVolDesc;
     5046        ISO9660SUPVOLDESC       SupVolDesc;
     5047    } uBuf;
     5048
     5049    switch (enmInfo)
     5050    {
     5051        case RTVFSQIEX_VOL_LABEL:
     5052        {
     5053            if (pThis->enmType == RTFSISOVOLTYPE_UDF)
     5054                return rtFsIsoVol_ReturnUdfDString(pThis->Udf.VolInfo.achLogicalVolumeID,
     5055                                                   sizeof(pThis->Udf.VolInfo.achLogicalVolumeID), pvInfo, cbInfo, pcbRet);
     5056            int rc = RTVfsFileReadAt(pThis->hVfsBacking,
     5057                                     pThis->enmType == RTFSISOVOLTYPE_ISO9960
     5058                                     ? pThis->offPrimaryVolDesc : pThis->offSecondaryVolDesc,
     5059                                     uBuf.ab, RT_MAX(RT_MIN(pThis->cbSector, sizeof(uBuf)), sizeof(uBuf.PriVolDesc)), NULL);
     5060            AssertRCReturn(rc, rc);
     5061            switch (enmInfo)
     5062            {
     5063                case RTVFSQIEX_VOL_LABEL:
     5064                    if (pThis->enmType == RTFSISOVOLTYPE_ISO9960)
     5065                        return rtFsIsoVol_ReturnIso9660DString(uBuf.PriVolDesc.achVolumeId, sizeof(uBuf.PriVolDesc.achVolumeId),
     5066                                                               pvInfo, cbInfo, pcbRet);
     5067                    return rtFsIsoVol_ReturnIso9660D1String(uBuf.SupVolDesc.achVolumeId, sizeof(uBuf.SupVolDesc.achVolumeId),
     5068                                                            pvInfo, cbInfo, pcbRet);
     5069                default:
     5070                    AssertFailedReturn(VERR_INTERNAL_ERROR);
     5071            }
     5072            break;
     5073        }
     5074
     5075        default:
     5076            return VERR_NOT_SUPPORTED;
     5077
     5078    }
     5079
     5080    return VINF_SUCCESS;
     5081}
     5082
     5083
    48875084/**
    48885085 * @interface_method_impl{RTVFSOPS,pfnOpenRoot}
     
    49155112        rtFsIsoVol_Close,
    49165113        rtFsIsoVol_QueryInfo,
     5114        rtFsIsoVol_QueryInfoEx,
    49175115        RTVFSOBJOPS_VERSION
    49185116    },
     
    64246622
    64256623    /*
     6624     * Take down the location of the primary volume descriptor so we can get
     6625     * the volume lable and other info from it later.
     6626     */
     6627    pThis->offPrimaryVolDesc = offVolDesc;
     6628
     6629    /*
    64266630     * We need the block size ...
    64276631     */
     
    65566760                        : pVolDesc->abEscapeSequences[2] == ISO9660_JOLIET_ESC_SEQ_2_LEVEL_2 ? 2 : 3;
    65576761        Log(("ISO9660: Joliet with UCS-2 level %u\n", *pbUcs2Level));
     6762
     6763        /*
     6764         * Take down the location of the secondary volume descriptor so we can get
     6765         * the volume lable and other info from it later.
     6766         */
     6767        pThis->offSecondaryVolDesc = offVolDesc;
    65586768    }
    65596769    return rc;
     
    67937003     * If we found a UDF VRS and are interested in UDF, we have more work to do here.
    67947004     */
    6795     if (uUdfLevel > 0 && !(fFlags & RTFSISO9660_F_NO_UDF) )
     7005    if (uUdfLevel > 0 && !(fFlags & RTFSISO9660_F_NO_UDF))
    67967006    {
    67977007        Log(("rtFsIsoVolTryInit: uUdfLevel=%d\n", uUdfLevel));
  • trunk/src/VBox/Runtime/common/fs/ntfsvfs.cpp

    r93115 r94291  
    26022602            rtFsNtfsFile_Close,
    26032603            rtFsNtfsFile_QueryInfo,
     2604            NULL,
    26042605            RTVFSOBJOPS_VERSION
    26052606        },
     
    43984399        rtFsNtfsDir_Close,
    43994400        rtFsNtfsDir_QueryInfo,
     4401        NULL,
    44004402        RTVFSOBJOPS_VERSION
    44014403    },
     
    47574759        /* .pfnClose = */       rtFsNtfsVol_Close,
    47584760        /* .pfnQueryInfo = */   rtFsNtfsVol_QueryInfo,
     4761        /* .pfnQueryInfoEx = */ NULL,
    47594762        /* .uEndMarker = */     RTVFSOBJOPS_VERSION
    47604763    },
  • trunk/src/VBox/Runtime/common/fs/xfsvfs.cpp

    r93115 r94291  
    16681668            rtFsXfsFile_Close,
    16691669            rtFsXfsFile_QueryInfo,
     1670            NULL,
    16701671            RTVFSOBJOPS_VERSION
    16711672        },
     
    20422043        rtFsXfsDir_Close,
    20432044        rtFsXfsDir_QueryInfo,
     2045        NULL,
    20442046        RTVFSOBJOPS_VERSION
    20452047    },
     
    22232225        /* .pfnClose = */       rtFsXfsVol_Close,
    22242226        /* .pfnQueryInfo = */   rtFsXfsVol_QueryInfo,
     2227        /* .pfnQueryInfoEx = */ NULL,
    22252228        /* .uEndMarker = */     RTVFSOBJOPS_VERSION
    22262229    },
  • trunk/src/VBox/Runtime/common/vfs/vfsbase.cpp

    r93115 r94291  
    7272        AssertPtr((a_pObjOps)->pfnClose); \
    7373        AssertPtr((a_pObjOps)->pfnQueryInfo); \
     74        AssertPtrNull((a_pObjOps)->pfnQueryInfoEx); \
    7475        Assert((a_pObjOps)->uEndMarker == RTVFSOBJOPS_VERSION); \
    7576    } while (0)
     
    23082309
    23092310
     2311RTDECL(int) RTVfsQueryLabel(RTVFS hVfs, char *pszLabel, size_t cbLabel, size_t *pcbActual)
     2312{
     2313    RTVFSINTERNAL *pThis = hVfs;
     2314    AssertPtrReturn(pThis, VERR_INVALID_HANDLE);
     2315    AssertReturn(pThis->uMagic == RTVFS_MAGIC, VERR_INVALID_HANDLE);
     2316
     2317    if (cbLabel > 0)
     2318        AssertPtrReturn(pszLabel, VERR_INVALID_POINTER);
     2319
     2320    int rc;
     2321    if (pThis->pOps->Obj.pfnQueryInfoEx)
     2322    {
     2323        size_t cbActualIgn;
     2324        if (!pcbActual)
     2325            pcbActual = &cbActualIgn;
     2326
     2327        RTVfsLockAcquireRead(pThis->Base.hLock);
     2328        rc = pThis->pOps->Obj.pfnQueryInfoEx(pThis->Base.pvThis, RTVFSQIEX_VOL_LABEL, pszLabel, cbLabel, pcbActual);
     2329        RTVfsLockReleaseRead(pThis->Base.hLock);
     2330    }
     2331    else
     2332        rc = VERR_NOT_SUPPORTED;
     2333    return rc;
     2334}
     2335
    23102336
    23112337
  • trunk/src/VBox/Runtime/common/vfs/vfsfss2dir.cpp

    r93115 r94291  
    284284        rtVfsFssToDir_Close,
    285285        rtVfsFssToDir_QueryInfo,
     286        NULL,
    286287        RTVFSOBJOPS_VERSION
    287288    },
  • trunk/src/VBox/Runtime/common/vfs/vfsmemory.cpp

    r93115 r94291  
    731731            rtVfsMemFile_Close,
    732732            rtVfsMemFile_QueryInfo,
     733            NULL,
    733734            RTVFSOBJOPS_VERSION
    734735        },
  • trunk/src/VBox/Runtime/common/vfs/vfsprogress.cpp

    r93115 r94291  
    308308        rtVfsProgressFile_Close,
    309309        rtVfsProgressFile_QueryInfo,
     310        NULL,
    310311        RTVFSOBJOPS_VERSION
    311312    },
     
    439440            rtVfsProgressFile_Close,
    440441            rtVfsProgressFile_QueryInfo,
     442            NULL,
    441443            RTVFSOBJOPS_VERSION
    442444        },
  • trunk/src/VBox/Runtime/common/vfs/vfsreadahead.cpp

    r93115 r94291  
    535535        rtVfsReadAhead_Close,
    536536        rtVfsReadAhead_QueryInfo,
     537        NULL,
    537538        RTVFSOBJOPS_VERSION
    538539    },
     
    562563            rtVfsReadAhead_Close,
    563564            rtVfsReadAhead_QueryInfo,
     565            NULL,
    564566            RTVFSOBJOPS_VERSION
    565567        },
  • trunk/src/VBox/Runtime/common/vfs/vfsstddir.cpp

    r93115 r94291  
    166166        rtVfsStdSym_Close,
    167167        rtVfsStdSym_QueryInfo,
     168        NULL,
    168169        RTVFSOBJOPS_VERSION
    169170    },
     
    668669        rtVfsStdDir_Close,
    669670        rtVfsStdDir_QueryInfo,
     671        NULL,
    670672        RTVFSOBJOPS_VERSION
    671673    },
  • trunk/src/VBox/Runtime/common/vfs/vfsstdfile.cpp

    r93115 r94291  
    451451            rtVfsStdFile_Close,
    452452            rtVfsStdFile_QueryInfo,
     453            NULL,
    453454            RTVFSOBJOPS_VERSION
    454455        },
  • trunk/src/VBox/Runtime/common/vfs/vfsstdpipe.cpp

    r93115 r94291  
    256256        rtVfsStdPipe_Close,
    257257        rtVfsStdPipe_QueryInfo,
     258        NULL,
    258259        RTVFSOBJOPS_VERSION
    259260    },
  • trunk/src/VBox/Runtime/common/zip/cpiovfs.cpp

    r93115 r94291  
    442442    rtZipCpioFssBaseObj_Close,
    443443    rtZipCpioFssBaseObj_QueryInfo,
     444    NULL,
    444445    RTVFSOBJOPS_VERSION
    445446};
     
    586587        rtZipCpioFssIos_Close,
    587588        rtZipCpioFssIos_QueryInfo,
     589        NULL,
    588590        RTVFSOBJOPS_VERSION
    589591    },
     
    672674        rtZipCpioFssSym_Close,
    673675        rtZipCpioFssSym_QueryInfo,
     676        NULL,
    674677        RTVFSOBJOPS_VERSION
    675678    },
     
    10241027        rtZipCpioFss_Close,
    10251028        rtZipCpioFss_QueryInfo,
     1029        NULL,
    10261030        RTVFSOBJOPS_VERSION
    10271031    },
  • trunk/src/VBox/Runtime/common/zip/gzipvfs.cpp

    r93115 r94291  
    669669        rtZipGzip_Close,
    670670        rtZipGzip_QueryInfo,
     671        NULL,
    671672        RTVFSOBJOPS_VERSION
    672673    },
  • trunk/src/VBox/Runtime/common/zip/pkzip.cpp

    r93115 r94291  
    165165        memFssIos_Close,
    166166        memFssIos_QueryInfo,
     167        NULL,
    167168        RTVFSOBJOPS_VERSION
    168169    },
  • trunk/src/VBox/Runtime/common/zip/pkzipvfs.cpp

    r93115 r94291  
    820820    rtZipPkzipFssBaseObj_Close,
    821821    rtZipPkzipFssBaseObj_QueryInfo,
     822    NULL,
    822823    RTVFSOBJOPS_VERSION
    823824};
     
    10421043        rtZipPkzipFssIos_Close,
    10431044        rtZipPkzipFssIos_QueryInfo,
     1045        NULL,
    10441046        RTVFSOBJOPS_VERSION
    10451047    },
     
    12341236        rtZipPkzipFss_Close,
    12351237        rtZipPkzipFss_QueryInfo,
     1238        NULL,
    12361239        RTVFSOBJOPS_VERSION
    12371240    },
  • trunk/src/VBox/Runtime/common/zip/tarvfs.cpp

    r93115 r94291  
    831831    rtZipTarFssBaseObj_Close,
    832832    rtZipTarFssBaseObj_QueryInfo,
     833    NULL,
    833834    RTVFSOBJOPS_VERSION
    834835};
     
    975976        rtZipTarFssIos_Close,
    976977        rtZipTarFssIos_QueryInfo,
     978        NULL,
    977979        RTVFSOBJOPS_VERSION
    978980    },
     
    10611063        rtZipTarFssSym_Close,
    10621064        rtZipTarFssSym_QueryInfo,
     1065        NULL,
    10631066        RTVFSOBJOPS_VERSION
    10641067    },
     
    13531356        rtZipTarFss_Close,
    13541357        rtZipTarFss_QueryInfo,
     1358        NULL,
    13551359        RTVFSOBJOPS_VERSION
    13561360    },
  • trunk/src/VBox/Runtime/common/zip/tarvfswriter.cpp

    r93115 r94291  
    783783        rtZipTarWriterPush_Close,
    784784        rtZipTarWriterPush_QueryInfo,
     785        NULL,
    785786        RTVFSOBJOPS_VERSION
    786787    },
     
    810811            rtZipTarWriterPush_Close,
    811812            rtZipTarWriterPush_QueryInfo,
     813            NULL,
    812814            RTVFSOBJOPS_VERSION
    813815        },
     
    20562058        rtZipTarFssWriter_Close,
    20572059        rtZipTarFssWriter_QueryInfo,
     2060        NULL,
    20582061        RTVFSOBJOPS_VERSION
    20592062    },
  • trunk/src/VBox/Runtime/common/zip/xarvfs.cpp

    r93115 r94291  
    812812    rtZipXarFssBaseObj_Close,
    813813    rtZipXarFssBaseObj_QueryInfo,
     814    NULL,
    814815    RTVFSOBJOPS_VERSION
    815816};
     
    10171018        rtZipXarFssIos_Close,
    10181019        rtZipXarFssIos_QueryInfo,
     1020        NULL,
    10191021        RTVFSOBJOPS_VERSION
    10201022    },
     
    11461148            rtZipXarFssFile_Close,
    11471149            rtZipXarFssIos_QueryInfo,
     1150            NULL,
    11481151            RTVFSOBJOPS_VERSION
    11491152        },
     
    13341337        rtZipXarFssDecompIos_Close,
    13351338        rtZipXarFssDecompIos_QueryInfo,
     1339        NULL,
    13361340        RTVFSOBJOPS_VERSION
    13371341    },
     
    14271431        rtZipXarFssSym_Close,
    14281432        rtZipXarFssSym_QueryInfo,
     1433        NULL,
    14291434        RTVFSOBJOPS_VERSION
    14301435    },
     
    17991804        rtZipXarFss_Close,
    18001805        rtZipXarFss_QueryInfo,
     1806        NULL,
    18011807        RTVFSOBJOPS_VERSION
    18021808    },
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