Changeset 95435 in vbox for trunk/src/VBox
- Timestamp:
- Jun 29, 2022 5:15:04 PM (3 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Runtime/common/fs/isomaker.cpp
r94291 r95435 642 642 /** Pointer to the instance data of an ISO maker output file. */ 643 643 typedef RTFSISOMAKEROUTPUTFILE *PRTFSISOMAKEROUTPUTFILE; 644 645 646 /** 647 * Directory entry type. 648 */ 649 typedef enum RTFSISOMAKERDIRENTRY 650 { 651 /** Invalid directory entry. */ 652 RTFSISOMAKERDIRENTRY_INVALID = 0, 653 /** Entry for the current directory, aka ".". */ 654 RTFSISOMAKERDIRENTRY_CURRENT, 655 /** Entry for the parent directory, aka "..". */ 656 RTFSISOMAKERDIRENTRY_PARENT, 657 /** Entry for a regular directory entry. */ 658 RTFSISOMAKERDIRENTRY_OTHER 659 } RTFSISOMAKERDIRENTRY; 644 660 645 661 … … 5837 5853 * directory record (false). 5838 5854 */ 5839 static void rtFsIosMakerOutFile_GenerateRockRidge(PRTFSISOMAKERNAME pName, uint8_t *pbSys, size_t cbSys, bool fInSpill) 5855 static void rtFsIosMakerOutFile_GenerateRockRidge(PRTFSISOMAKERNAME pName, uint8_t *pbSys, size_t cbSys, bool fInSpill, 5856 RTFSISOMAKERDIRENTRY enmEntry) 5840 5857 { 5841 5858 /* … … 5981 5998 pNM->Hdr.bVersion = ISO9660RRIPNM_VER; 5982 5999 pNM->fFlags = cchThis == cchSrc ? 0 : ISO9660RRIP_NM_F_CONTINUE; 6000 if (enmEntry == RTFSISOMAKERDIRENTRY_CURRENT) 6001 pNM->fFlags |= ISO9660RRIP_NM_F_CURRENT; 6002 else if (enmEntry == RTFSISOMAKERDIRENTRY_PARENT) 6003 pNM->fFlags |= ISO9660RRIP_NM_F_PARENT; 5983 6004 memcpy(&pNM->achName[0], pszSrc, cchThis); 5984 6005 pbSys += RT_UOFFSETOF(ISO9660RRIPNM, achName) + cchThis; … … 6149 6170 6150 6171 AssertReturn(cbToRead >= pChild->cbRockSpill, VERR_ISOMK_IPE_RR_READ); 6151 rtFsIosMakerOutFile_GenerateRockRidge(pDir->pName, pbBuf, cbToRead, true /*fInSpill*/ );6172 rtFsIosMakerOutFile_GenerateRockRidge(pDir->pName, pbBuf, cbToRead, true /*fInSpill*/, RTFSISOMAKERDIRENTRY_OTHER); 6152 6173 cbToRead -= pChild->cbRockSpill; 6153 6174 pbBuf += pChild->cbRockSpill; … … 6658 6679 */ 6659 6680 static uint32_t rtFsIsoMakerOutFile_GenerateDirRec(PRTFSISOMAKERNAME pName, bool fUnicode, uint8_t *pbBuf, 6660 PRTFSISOMAKERFINALIZEDDIRS pFinalizedDirs )6681 PRTFSISOMAKERFINALIZEDDIRS pFinalizedDirs, RTFSISOMAKERDIRENTRY enmEntry) 6661 6682 { 6662 6683 /* … … 6733 6754 RT_BZERO(&pbSys[pName->cbRockInDirRec], cbSys - pName->cbRockInDirRec); 6734 6755 if (pName->cbRockSpill == 0) 6735 rtFsIosMakerOutFile_GenerateRockRidge(pName, pbSys, cbSys, false /*fInSpill*/ );6756 rtFsIosMakerOutFile_GenerateRockRidge(pName, pbSys, cbSys, false /*fInSpill*/, enmEntry); 6736 6757 else 6737 6758 { … … 6798 6819 * Normally there is just a single record without any zero padding. 6799 6820 */ 6800 uint32_t cbReturn = rtFsIsoMakerOutFile_GenerateDirRec(pName, fUnicode, pbBuf, pFinalizedDirs );6821 uint32_t cbReturn = rtFsIsoMakerOutFile_GenerateDirRec(pName, fUnicode, pbBuf, pFinalizedDirs, RTFSISOMAKERDIRENTRY_OTHER); 6801 6822 if (RT_LIKELY(pName->cbDirRecTotal == cbReturn)) 6802 6823 return cbReturn; … … 6874 6895 uint8_t abTmpBuf[256]; 6875 6896 Assert(pName->cbDirRec <= sizeof(abTmpBuf)); 6876 uint32_t const cbOne = rtFsIsoMakerOutFile_GenerateDirRec(pName, fUnicode, abTmpBuf, pFinalizedDirs );6897 uint32_t const cbOne = rtFsIsoMakerOutFile_GenerateDirRec(pName, fUnicode, abTmpBuf, pFinalizedDirs, RTFSISOMAKERDIRENTRY_OTHER); 6877 6898 Assert(cbOne == pName->cbDirRec); 6878 6899 if (cbOne == pName->cbDirRecTotal) … … 6993 7014 uint8_t abTmpBuf[256]; 6994 7015 Assert(off < pName->cbDirRec); 6995 size_t cbToCopy = rtFsIsoMakerOutFile_GenerateDirRec(pName, fUnicode, abTmpBuf, pFinalizedDirs); 7016 size_t cbToCopy = rtFsIsoMakerOutFile_GenerateDirRec(pName, fUnicode, abTmpBuf, pFinalizedDirs, 7017 bDirId == 0 ? RTFSISOMAKERDIRENTRY_CURRENT : RTFSISOMAKERDIRENTRY_PARENT); 6996 7018 Assert(cbToCopy == pName->cbDirRec); 6997 7019
Note:
See TracChangeset
for help on using the changeset viewer.