Changeset 827
Legend:
- Unmodified
- Added
- Removed
-
TabularUnified trunk/dll/attribs.c ¶
r826 r827 11 11 14 Jul 06 SHL Use Runtime_Error 12 12 20 Aug 07 GKY Move #pragma alloc_text to end for OpenWatcom compat 13 01 Sep 07 GKY AddxDosSetPathInfo to fix case where FS3 buffer crosses 64k boundry13 01 Sep 07 GKY Use xDosSetPathInfo to fix case where FS3 buffer crosses 64k boundry 14 14 15 15 ***********************************************************************/ … … 378 378 else if (state == 1) 379 379 fi.attrFile |= FILE_ARCHIVED; 380 xDosSetPathInfo(li->list[x], FIL_STANDARD, (PVOID) & fi, 381 (ULONG) sizeof(FILESTATUS3), 0L); 380 xDosSetPathInfo(li->list[x], FIL_STANDARD, &fi, sizeof(fi), 0); 382 381 } 383 382 WinDismissDlg(hwnd, 1); -
TabularUnified trunk/dll/autoview.c ¶
r826 r827 19 19 30 Mar 07 GKY Remove GetPString for window class names 20 20 20 Aug 07 GKY Move #pragma alloc_text to end for OpenWatcom compat 21 01 Sep 07 GKY AddxDosSetPathInfo to fix case where FS3 buffer crosses 64k boundry21 01 Sep 07 GKY Use xDosSetPathInfo to fix case where FS3 buffer crosses 64k boundry 22 22 23 23 ***********************************************************************/ … … 195 195 pfealist->cbList = 13L + (ULONG) pfealist->list[0].cbName + 196 196 (ULONG) pfealist->list[0].cbValue; 197 rc = xDosSetPathInfo(filename, FIL_QUERYEASIZE, (PVOID) & eaop,198 (ULONG) sizeof(EAOP2), DSPI_WRTTHRU);197 rc = xDosSetPathInfo(filename, FIL_QUERYEASIZE, 198 &eaop, sizeof(eaop), DSPI_WRTTHRU); 199 199 DosFreeMem(pfealist); 200 200 if (!rc) -
TabularUnified trunk/dll/copyf.c ¶
r826 r827 17 17 14 Jul 06 SHL Use Runtime_Error 18 18 20 Aug 07 GKY Move #pragma alloc_text to end for OpenWatcom compat 19 01 Sep 07 GKY AddxDosSetPathInfo to fix case where FS3 buffer crosses 64k boundry19 01 Sep 07 GKY Use xDosSetPathInfo to fix case where FS3 buffer crosses 64k boundry 20 20 21 21 ***********************************************************************/ … … 300 300 eaop.oError = 0L; 301 301 DosError(FERR_DISABLEHARDERR); 302 rc = xDosSetPathInfo(filename, 303 FIL_QUERYEASIZE, 304 (PVOID) & eaop, (ULONG) sizeof(EAOP2), DSPI_WRTTHRU); 302 rc = xDosSetPathInfo(filename, FIL_QUERYEASIZE, 303 &eaop, sizeof(eaop), DSPI_WRTTHRU); 305 304 DosFreeMem(pfealist); 306 305 if (rc) … … 314 313 BOOL ret = FALSE; 315 314 316 /* NOTE: 315 /* NOTE: newname should be CCHMAXPATH chars long! */ 317 316 318 317 if (strchr(newname, '*') || strchr(newname, '?')) { … … 375 374 376 375 /* truncate directory name */ 377 /* create that directory 376 /* create that directory */ 378 377 /* update containers for name used */ 379 378 … … 402 401 * -2: source didn't exist 403 402 * -3: bad type 404 * anything else: 403 * anything else: API return 405 404 */ 406 405 … … 665 664 666 665 DosError(FERR_DISABLEHARDERR); 667 if (!DosQueryPathInfo(filename, FIL_STANDARD, &fsi, sizeof( FILESTATUS3))) {666 if (!DosQueryPathInfo(filename, FIL_STANDARD, &fsi, sizeof(fsi))) { 668 667 fsi.attrFile = 0; 669 668 DosError(FERR_DISABLEHARDERR); 670 if (!xDosSetPathInfo(filename, 671 FIL_STANDARD, &fsi, sizeof(FILESTATUS3), 0L)) 669 if (!xDosSetPathInfo(filename, FIL_STANDARD, &fsi, sizeof(fsi), 0)) 672 670 ret = 0; 673 671 } … … 675 673 } 676 674 677 INT wipeallf(CHAR * 675 INT wipeallf(CHAR *string, ...) 678 676 { 679 677 /* unlink everything from directory on down... */ -
TabularUnified trunk/dll/eas.c ¶
r826 r827 20 20 06 Aug 07 GKY Increase Subject EA to 1024 21 21 20 Aug 07 GKY Move #pragma alloc_text to end for OpenWatcom compat 22 01 Sep 07 GKY AddxDosSetPathInfo to fix case where FS3 buffer crosses 64k boundry22 01 Sep 07 GKY Use xDosSetPathInfo to fix case where FS3 buffer crosses 64k boundry 23 23 24 24 ***********************************************************************/ … … 207 207 eaop.fpFEA2List = pfealist; 208 208 eaop.oError = 0; 209 xDosSetPathInfo(filename, FIL_QUERYEASIZE, (PVOID) & eaop,210 (ULONG) sizeof(EAOP2), DSPI_WRTTHRU);209 xDosSetPathInfo(filename, FIL_QUERYEASIZE, 210 &eaop, sizeof(eaop), DSPI_WRTTHRU); 211 211 WinDismissDlg(hwnd, 1); 212 212 } … … 907 907 eaop.fpFEA2List = pfealist; 908 908 eaop.oError = 0; 909 rc = xDosSetPathInfo(eap->filename, FIL_QUERYEASIZE, (PVOID) & eaop,910 (ULONG) sizeof(EAOP2), DSPI_WRTTHRU);909 rc = xDosSetPathInfo(eap->filename, FIL_QUERYEASIZE, 910 &eaop, sizeof(eaop), DSPI_WRTTHRU); 911 911 free(pfealist); 912 912 if (rc) … … 1153 1153 (ULONG)pfealist->list[0].cbValue; 1154 1154 1155 rc = xDosSetPathInfo(filename, FIL_QUERYEASIZE, (PVOID) & eaop,1156 (ULONG) sizeof(EAOP2), DSPI_WRTTHRU);1155 rc = xDosSetPathInfo(filename, FIL_QUERYEASIZE, 1156 &eaop, sizeof(eaop), DSPI_WRTTHRU); 1157 1157 if (rc) { 1158 1158 DosFreeMem(pfealist); -
TabularUnified trunk/dll/init.c ¶
r826 r827 35 35 23 Aug 07 SHL Use BldFullPathName 36 36 25 Aug 07 SHL Work around DosSetPathInfo kernel defect 37 01 Sep 07 GKY AddxDosSetPathInfo to fix case where FS3 buffer crosses 64k boundry37 01 Sep 07 GKY Use xDosSetPathInfo to fix case where FS3 buffer crosses 64k boundry 38 38 39 39 ***********************************************************************/ -
TabularUnified trunk/dll/misc.c ¶
r826 r827 33 33 14 Aug 07 SHL Delete obsoletes 34 34 14 Aug 07 SHL Move #pragma alloc_text to end for OpenWatcom compat 35 01 Sep 07 GKY AddxDosSetPathInfo to fix case where FS3 buffer crosses 64k boundry35 01 Sep 07 GKY Use xDosSetPathInfo to fix case where FS3 buffer crosses 64k boundry 36 36 37 37 ***********************************************************************/ … … 521 521 pfi->flData = CFA_STRING | CFA_LEFT | CFA_SEPARATOR; 522 522 if (isCompCnr) 523 523 pfi->flData |= CFA_FIREADONLY; 524 524 pfi->flTitle = CFA_LEFT | CFA_FITITLEREADONLY; 525 525 pfi->pTitleData = isCompCnr ? GetPString(IDS_STATUS) : … … 541 541 pfi->flData = CFA_STRING | CFA_LEFT | CFA_SEPARATOR; 542 542 if (isCompCnr) 543 543 pfi->flData |= CFA_FIREADONLY; 544 544 pfi->flTitle = CFA_LEFT | CFA_FITITLEREADONLY; 545 545 pfi->pTitleData = isCompCnr ? GetPString(IDS_STATUS) : … … 748 748 eaop.fpFEA2List = pfealist; 749 749 eaop.oError = 0L; 750 rc = xDosSetPathInfo(pci->pszFileName, 751 FIL_QUERYEASIZE, 752 (PVOID) & eaop, sizeof(EAOP2), DSPI_WRTTHRU); 750 rc = xDosSetPathInfo(pci->pszFileName, FIL_QUERYEASIZE, 751 &eaop, sizeof(eaop), DSPI_WRTTHRU); 753 752 DosFreeMem(pfealist); 754 753 if (rc) -
TabularUnified trunk/dll/subj.c ¶
r826 r827 13 13 06 Aug 07 GKY Increase Subject EA to 1024 14 14 20 Aug 07 GKY Move #pragma alloc_text to end for OpenWatcom compat 15 01 Sep 07 GKY AddxDosSetPathInfo to fix case where FS3 buffer crosses 64k boundry15 01 Sep 07 GKY Use xDosSetPathInfo to fix case where FS3 buffer crosses 64k boundry 16 16 17 17 ***********************************************************************/ … … 136 136 eaop.fpGEA2List = (PGEA2LIST) 0; 137 137 eaop.fpFEA2List = pfealist; 138 eaop.oError = 0 L;139 rc = xDosSetPathInfo(filename, FIL_QUERYEASIZE, (PVOID) & eaop,140 (ULONG) sizeof(EAOP2), DSPI_WRTTHRU);138 eaop.oError = 0; 139 rc = xDosSetPathInfo(filename, FIL_QUERYEASIZE, 140 &eaop, sizeof(eaop), DSPI_WRTTHRU); 141 141 DosFreeMem(pfealist); 142 142 if (rc) { -
TabularUnified trunk/dll/wrappers.c ¶
r826 r827 28 28 #include "fm3str.h" 29 29 30 APIRET APIENTRY xDosSetPathInfo(PSZ pszPathName, 31 ULONG ulInfoLevel, 32 PVOID pInfoBuf, 33 ULONG cbInfoBuf, 34 ULONG flOptions) 30 static PSZ pszSrcFile = __FILE__; 31 32 /** 33 * Wrap DosSetPathInfo to avoid spurious ERROR_INVALID_NAME returns 34 * Some kernels to do not correctly handle FILESTATUS3 and PEAOP2 buffers 35 * that cross a 64K boundary. 36 * When this occurs, they return ERROR_INVALID_NAME. 37 * This code works around the problem because if the passed buffer crosses 38 * the boundary the alternate buffer will not because both are on the stack 39 * and we don't put enough additional data on the stack for this to occur. 40 * It is caller's responsitibility to report errors 41 * @param pInfoBuf pointer to FILESTATUS3 or EAOP2 buffer 42 * @param ulInfoLevel FIL_STANDARD or FIL_QUERYEASIZE 43 * @returns Same as DosSetPathInfo 44 */ 45 46 APIRET APIENTRY xDosSetPathInfo(PSZ pszPathName, 47 ULONG ulInfoLevel, 48 PVOID pInfoBuf, 49 ULONG cbInfoBuf, 50 ULONG flOptions) 35 51 { 36 APIRET rc; 37 38 rc = DosSetPathInfo(pszPathName, ulInfoLevel, pInfoBuf, cbInfoBuf, flOptions); 39 if (rc) 40 /* Some kernels to do not handle fs3 buffers that cross 64K boundaries 41 and return ERROR_INVALID_NAME 42 If code works around the problem because if fs3 crosses the boundary 43 fsa2 will not because we don't have enough data on the stack for this 44 to occur 25 Aug 07 SHL 45 */ 46 if (rc == ERROR_INVALID_NAME){ 47 if (ulInfoLevel == FIL_STANDARD){ 48 FILESTATUS3 fs3x; 49 fs3x = *(PFILESTATUS3) pInfoBuf; 50 rc = DosSetPathInfo(pszPathName, ulInfoLevel, &fs3x, sizeof(fs3x), flOptions); 51 } 52 else { 53 EAOP2 eaop2x; 54 eaop2x = *(PEAOP2) pInfoBuf; 55 rc = DosSetPathInfo(pszPathName, ulInfoLevel, &eaop2x, sizeof(eaop2x), flOptions); 56 } 57 } 52 APIRET rc = DosSetPathInfo(pszPathName, ulInfoLevel, pInfoBuf, cbInfoBuf, flOptions); 53 FILESTATUS3 alt_fs3; 54 EAOP2 alt_eaop2; 55 if (rc == ERROR_INVALID_NAME) { 56 switch (ulInfoLevel) { 57 case FIL_STANDARD: 58 alt_fs3 = *(PFILESTATUS3)pInfoBuf; // Copy 59 rc = DosSetPathInfo(pszPathName, ulInfoLevel, &alt_fs3, sizeof(alt_fs3), flOptions); 60 break; 61 case FIL_QUERYEASIZE: 62 alt_eaop2 = *(PEAOP2)pInfoBuf; // Copy 63 rc = DosSetPathInfo(pszPathName, ulInfoLevel, &alt_eaop2, sizeof(alt_eaop2), flOptions); 64 break; 65 default: 66 Runtime_Error(pszSrcFile, __LINE__, "ulInfoLevel %u unexpected", ulInfoLevel); 67 rc = ERROR_INVALID_PARAMETER; 68 } // switch 69 } 58 70 return rc; 59 71 }
Note:
See TracChangeset
for help on using the changeset viewer.