Changeset 849 for trunk/dll/wrappers.c
- Timestamp:
- Sep 30, 2007, 9:10:59 PM (18 years ago)
- File:
-
- 1 edited
-
trunk/dll/wrappers.c (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/dll/wrappers.c
r847 r849 40 40 { 41 41 APIRET rc; 42 42 if (fNoLargeFileSupport) { 43 switch (ulInfoLevel) { 44 case FIL_STANDARDL: { 45 FILEFINDBUF3 ff3; 46 ff3 = *(PFILEFINDBUF3)pfindbuf; 47 ulInfoLevel = FIL_STANDARD; 48 rc = DosFindFirst(pszFileSpec, phdir, flAttribute, &ff3, cbBuf, 49 pcFileNames, ulInfoLevel); 50 *(PFILEFINDBUF3)pfindbuf = ff3; // Copy aligned data 51 ((PFILEFINDBUF3L)pfindbuf) -> cbFile = ff3.cbFile; // Copy unaligned data 52 ((PFILEFINDBUF3L)pfindbuf) -> cbFileAlloc = ff3.cbFileAlloc; 53 ((PFILEFINDBUF3L)pfindbuf) -> attrFile = ff3.attrFile; 54 ((PFILEFINDBUF3L)pfindbuf) -> cchName = ff3.cchName; 55 ((PFILEFINDBUF3L)pfindbuf) -> achName[CCHMAXPATHCOMP] = *ff3.achName; 56 break; 57 } 58 case FIL_QUERYEASIZEL:{ 59 FILEFINDBUF4 ff4; 60 ff4 = *(PFILEFINDBUF4)pfindbuf; 61 ulInfoLevel = FIL_QUERYEASIZE; 62 rc = DosFindFirst(pszFileSpec, phdir, flAttribute, &ff4, cbBuf, 63 pcFileNames, ulInfoLevel); 64 //(PFILEFINDBUF4L)pfindbuf = (PFILEFINDBUF4L)pff4; // Copy aligned data 65 ((PFILEFINDBUF4L)pfindbuf) -> oNextEntryOffset = ff4.oNextEntryOffset; 66 ((PFILEFINDBUF4L)pfindbuf) -> fdateCreation = ff4.fdateCreation; 67 ((PFILEFINDBUF4L)pfindbuf) -> ftimeCreation = ff4.ftimeCreation; 68 ((PFILEFINDBUF4L)pfindbuf) -> fdateLastAccess = ff4.fdateLastAccess; 69 ((PFILEFINDBUF4L)pfindbuf) -> ftimeLastAccess = ff4.ftimeLastAccess; 70 ((PFILEFINDBUF4L)pfindbuf) -> fdateLastWrite = ff4.fdateLastWrite; 71 ((PFILEFINDBUF4L)pfindbuf) -> ftimeLastWrite = ff4.ftimeLastWrite; 72 ((PFILEFINDBUF4L)pfindbuf) -> cbFile = ff4.cbFile; // Copy unaligned data 73 ((PFILEFINDBUF4L)pfindbuf) -> cbFileAlloc = ff4.cbFileAlloc; 74 ((PFILEFINDBUF4L)pfindbuf) -> attrFile = ff4.attrFile; 75 ((PFILEFINDBUF4L)pfindbuf) -> cbList = ff4.cbList; 76 ((PFILEFINDBUF4L)pfindbuf) -> cchName = ff4.cchName; 77 ((PFILEFINDBUF4L)pfindbuf) -> achName[CCHMAXPATHCOMP] = *ff4.achName; 78 break; 79 } 80 default: 81 Runtime_Error(pszSrcFile, __LINE__, "ulInfoLevel %u unexpected", ulInfoLevel); 82 rc = ERROR_INVALID_PARAMETER; 83 } 84 } 85 else 43 86 rc = DosFindFirst(pszFileSpec, phdir, flAttribute, pfindbuf, cbBuf, 44 87 pcFileNames, ulInfoLevel); … … 52 95 { 53 96 APIRET rc; 54 55 rc = DosFindNext(hDir, pfindbuf, cbfindbuf, pcFilenames); 97 if (fNoLargeFileSupport) { 98 if (((PFILEFINDBUF4L)pfindbuf)->cbList) { 99 FILEFINDBUF4 ff4; 100 ff4 = *(PFILEFINDBUF4)pfindbuf; 101 rc = DosFindNext(hDir, &ff4, cbfindbuf, pcFilenames); 102 *(PFILEFINDBUF4)pfindbuf = ff4; // Copy aligned data 103 ((PFILEFINDBUF4L)pfindbuf) -> cbFile = ff4.cbFile; // Copy unaligned data 104 ((PFILEFINDBUF4L)pfindbuf) -> cbFileAlloc = ff4.cbFileAlloc; 105 ((PFILEFINDBUF4L)pfindbuf) -> attrFile = ff4.attrFile; 106 ((PFILEFINDBUF4L)pfindbuf) -> cbList = ff4.cbList; 107 ((PFILEFINDBUF4L)pfindbuf) -> cchName = ff4.cchName; 108 ((PFILEFINDBUF4L)pfindbuf) -> achName[CCHMAXPATHCOMP] = *ff4.achName; 109 } 110 else { 111 FILEFINDBUF3 ff3; 112 ff3 = *(PFILEFINDBUF3)pfindbuf; 113 rc = DosFindNext(hDir, &ff3, cbfindbuf, pcFilenames); 114 *(PFILEFINDBUF3)pfindbuf = ff3; // Copy aligned data 115 ((PFILEFINDBUF3L)pfindbuf) -> cbFile = ff3.cbFile; // Copy unaligned data 116 ((PFILEFINDBUF3L)pfindbuf) -> cbFileAlloc = ff3.cbFileAlloc; 117 ((PFILEFINDBUF3L)pfindbuf) -> attrFile = ff3.attrFile; 118 ((PFILEFINDBUF3L)pfindbuf) -> cchName = ff3.cchName; 119 ((PFILEFINDBUF3L)pfindbuf) -> achName[CCHMAXPATHCOMP] = *ff3.achName; 120 } 121 } 122 else 123 rc = DosFindNext(hDir, pfindbuf, cbfindbuf, pcFilenames); 124 56 125 return rc; 57 126 } … … 75 144 PVOID pInfoBuf, 76 145 ULONG cbInfoBuf, 77 ULONG flOptions) 78 { 79 APIRET rc = DosSetPathInfo(pszPathName, ulInfoLevel, pInfoBuf, cbInfoBuf, flOptions); 146 ULONG flOptions) 147 { 80 148 FILESTATUS3 alt_fs3; 81 149 FILESTATUS3L alt_fs3L; 82 150 EAOP2 alt_eaop2; 151 BOOL large = FALSE; 152 APIRET rc; 153 if (fNoLargeFileSupport && ulInfoLevel == FIL_STANDARDL){ 154 large = TRUE; 155 ulInfoLevel = FIL_STANDARD; 156 } 157 rc = DosSetPathInfo(pszPathName, ulInfoLevel, pInfoBuf, cbInfoBuf, flOptions); 83 158 if (rc == ERROR_INVALID_NAME) { 84 159 switch (ulInfoLevel) { 85 160 case FIL_STANDARD: 86 161 alt_fs3 = *(PFILESTATUS3)pInfoBuf; // Copy 87 rc = DosSetPathInfo(pszPathName, ulInfoLevel, &alt_fs3, sizeof(alt_fs3), flOptions); 162 rc = DosSetPathInfo(pszPathName, ulInfoLevel, &alt_fs3, cbInfoBuf, flOptions); 163 if (fNoLargeFileSupport && large) { 164 *(PFILESTATUS3)pInfoBuf = alt_fs3; // Copy aligned data 165 ((PFILESTATUS3L)pInfoBuf) -> cbFile = alt_fs3.cbFile; // Copy unaligned data 166 ((PFILESTATUS3L)pInfoBuf) -> cbFileAlloc = alt_fs3.cbFileAlloc; 167 ((PFILESTATUS3L)pInfoBuf) -> attrFile = alt_fs3.attrFile; 168 } 88 169 break; 89 170 case FIL_STANDARDL: 90 171 alt_fs3L = *(PFILESTATUS3L)pInfoBuf; // Copy 91 rc = DosSetPathInfo(pszPathName, ulInfoLevel, &alt_fs3L, sizeof(alt_fs3L), flOptions);172 rc = DosSetPathInfo(pszPathName, ulInfoLevel, &alt_fs3L, cbInfoBuf, flOptions); 92 173 break; 93 174 case FIL_QUERYEASIZE: 94 175 alt_eaop2 = *(PEAOP2)pInfoBuf; // Copy 95 rc = DosSetPathInfo(pszPathName, ulInfoLevel, &alt_eaop2, sizeof(alt_eaop2), flOptions);176 rc = DosSetPathInfo(pszPathName, ulInfoLevel, &alt_eaop2, cbInfoBuf, flOptions); 96 177 break; 97 178 default: … … 103 184 } 104 185 186 APIRET xDosQueryPathInfo (PSZ pszPathName, ULONG ulInfoLevel, PVOID pInfoBuf, ULONG cbInfoBuf) 187 { 188 FILESTATUS3 alt_fs3; 189 FILESTATUS4 alt_fs4; 190 APIRET rc; 191 if (fNoLargeFileSupport){ 192 switch (ulInfoLevel) { 193 case FIL_STANDARDL: 194 alt_fs3 = *(PFILESTATUS3)pInfoBuf; // Copy 195 rc = DosQueryPathInfo(pszPathName, ulInfoLevel, &alt_fs3, cbInfoBuf); 196 *(PFILESTATUS3)pInfoBuf = alt_fs3; // Copy aligned data 197 ((PFILESTATUS3L)pInfoBuf) -> cbFile = alt_fs3.cbFile; // Copy unaligned data 198 ((PFILESTATUS3L)pInfoBuf) -> cbFileAlloc = alt_fs3.cbFileAlloc; 199 ((PFILESTATUS3L)pInfoBuf) -> attrFile = alt_fs3.attrFile; 200 break; 201 case FIL_QUERYEASIZEL: 202 alt_fs4 = *(PFILESTATUS4)pInfoBuf; // Copy 203 rc = DosQueryPathInfo(pszPathName, ulInfoLevel, &alt_fs4, cbInfoBuf); 204 *(PFILESTATUS4)pInfoBuf = alt_fs4; // Copy aligned data 205 ((PFILESTATUS4L)pInfoBuf) -> cbFile = alt_fs4.cbFile; // Copy unaligned data 206 ((PFILESTATUS4L)pInfoBuf) -> cbFileAlloc = alt_fs4.cbFileAlloc; 207 ((PFILESTATUS4L)pInfoBuf) -> attrFile = alt_fs4.attrFile; 208 ((PFILESTATUS4L)pInfoBuf) -> cbList = alt_fs4.cbList; 209 break; 210 default: 211 Runtime_Error(pszSrcFile, __LINE__, "ulInfoLevel %u unexpected", ulInfoLevel); 212 rc = ERROR_INVALID_PARAMETER; 213 } // switch 214 } 215 else 216 DosQueryPathInfo (pszPathName, ulInfoLevel, pInfoBuf, cbInfoBuf); 217 return rc; 218 } 105 219 PSZ xfgets(PSZ pszBuf, size_t cMaxBytes, FILE * fp, PCSZ pszSrcFile, 106 220 UINT uiLineNumber)
Note:
See TracChangeset
for help on using the changeset viewer.
