Changeset 551 for trunk/dll/subj.c
- Timestamp:
- Feb 28, 2007, 2:33:51 AM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/dll/subj.c
r335 r551 32 32 static PSZ pszSrcFile = __FILE__; 33 33 34 INT Subject (HWND hwnd,CHAR *filename)34 INT Subject(HWND hwnd, CHAR * filename) 35 35 { 36 APIRET 37 EAOP2 38 PGEA2LIST 39 PFEA2LIST 40 PGEA2 41 PFEA2 42 CHAR *value,subject[42],oldsubject[42];36 APIRET rc; 37 EAOP2 eaop; 38 PGEA2LIST pgealist; 39 PFEA2LIST pfealist; 40 PGEA2 pgea; 41 PFEA2 pfea; 42 CHAR *value, subject[42], oldsubject[42]; 43 43 STRINGINPARMS sip; 44 INT 44 INT ret = 0; 45 45 46 46 *subject = 0; 47 pgealist = xmallocz(sizeof(GEA2LIST) + 64, pszSrcFile,__LINE__);47 pgealist = xmallocz(sizeof(GEA2LIST) + 64, pszSrcFile, __LINE__); 48 48 if (pgealist) { 49 49 pgea = &pgealist->list[0]; 50 strcpy(pgea->szName, SUBJECT);50 strcpy(pgea->szName, SUBJECT); 51 51 pgea->cbName = strlen(pgea->szName); 52 52 pgea->oNextEntryOffset = 0L; 53 53 pgealist->cbList = (sizeof(GEA2LIST) + pgea->cbName); 54 pfealist = xmallocz(1024, pszSrcFile,__LINE__);55 if (pfealist)54 pfealist = xmallocz(1024, pszSrcFile, __LINE__); 55 if (pfealist) 56 56 free(pgealist); 57 57 else { … … 60 60 eaop.fpFEA2List = pfealist; 61 61 eaop.oError = 0L; 62 rc = DosQueryPathInfo(filename,FIL_QUERYEASFROMLIST, 63 (PVOID)&eaop, 64 (ULONG)sizeof(EAOP2)); 62 rc = DosQueryPathInfo(filename, FIL_QUERYEASFROMLIST, 63 (PVOID) & eaop, (ULONG) sizeof(EAOP2)); 65 64 free(pgealist); 66 65 if (!rc) { 67 68 69 70 if(*(USHORT *)value == EAT_ASCII)71 strncpy(subject,value + (sizeof(USHORT) * 2),39);72 66 pfea = &eaop.fpFEA2List->list[0]; 67 value = pfea->szName + pfea->cbName + 1; 68 value[pfea->cbValue] = 0; 69 if (*(USHORT *) value == EAT_ASCII) 70 strncpy(subject, value + (sizeof(USHORT) * 2), 39); 71 subject[39] = 0; 73 72 } 74 73 free(pfealist); 75 74 if (rc == ERROR_SHARING_VIOLATION || rc == ERROR_ACCESS_DENIED) { 76 saymsg(MB_CANCEL, 77 hwnd, 78 GetPString(IDS_OOPSTEXT), 79 GetPString(IDS_EASBUSYTEXT), 80 filename); 81 return 2; // Error 75 saymsg(MB_CANCEL, 76 hwnd, 77 GetPString(IDS_OOPSTEXT), 78 GetPString(IDS_EASBUSYTEXT), filename); 79 return 2; // Error 82 80 } 83 81 else if (rc) { 84 Dos_Error(MB_CANCEL,rc,hwnd,pszSrcFile,__LINE__,"DosQueryPathInfo"); 85 return 2; // Error 82 Dos_Error(MB_CANCEL, rc, hwnd, pszSrcFile, __LINE__, 83 "DosQueryPathInfo"); 84 return 2; // Error 86 85 } 87 86 } 88 87 } 89 memset(&sip, 0,sizeof(sip));90 strcpy(oldsubject, subject);88 memset(&sip, 0, sizeof(sip)); 89 strcpy(oldsubject, subject); 91 90 sip.help = GetPString(IDS_SUBJECTINPUTHELPTEXT); 92 91 sip.ret = subject; … … 94 93 sip.inputlen = 40; 95 94 sip.title = filename; 96 if (WinDlgBox(HWND_DESKTOP,hwnd,InputDlgProc,FM3ModHandle,STR_FRAME,&sip) 97 && isalpha(*filename) && 98 !(driveflags[toupper(*filename) - 'A'] & DRIVE_NOTWRITEABLE)) { 95 if (WinDlgBox 96 (HWND_DESKTOP, hwnd, InputDlgProc, FM3ModHandle, STR_FRAME, &sip) 97 && isalpha(*filename) 98 && !(driveflags[toupper(*filename) - 'A'] & DRIVE_NOTWRITEABLE)) { 99 99 subject[39] = 0; 100 100 bstrip(subject); 101 if (strcmp(oldsubject,subject)) {101 if (strcmp(oldsubject, subject)) { 102 102 103 ULONG 104 USHORT 105 CHAR 103 ULONG ealen; 104 USHORT len; 105 CHAR *eaval; 106 106 107 107 len = strlen(subject); 108 108 if (len) 109 109 ealen = sizeof(FEA2LIST) + 9 + len + 4; 110 110 else 111 112 rc = DosAllocMem((PPVOID) &pfealist,ealen + 1L,113 111 ealen = sizeof(FEALIST) + 9; 112 rc = DosAllocMem((PPVOID) & pfealist, ealen + 1L, 113 OBJ_TILE | PAG_COMMIT | PAG_READ | PAG_WRITE); 114 114 if (rc) 115 Dos_Error(MB_CANCEL,rc,hwnd,pszSrcFile,__LINE__,GetPString(IDS_OUTOFMEMORY)); 115 Dos_Error(MB_CANCEL, rc, hwnd, pszSrcFile, __LINE__, 116 GetPString(IDS_OUTOFMEMORY)); 116 117 else { 117 memset(pfealist,0,ealen + 1); 118 pfealist->cbList = ealen; 119 pfealist->list[0].oNextEntryOffset = 0L; 120 pfealist->list[0].fEA = 0; 121 pfealist->list[0].cbName = 8; 122 strcpy(pfealist->list[0].szName,SUBJECT); 123 if (len) { 124 eaval = pfealist->list[0].szName + 9; 125 *(USHORT *)eaval = (USHORT)EAT_ASCII; 126 eaval += sizeof(USHORT); 127 *(USHORT *)eaval = (USHORT)len; 128 eaval += sizeof(USHORT); 129 memcpy(eaval,subject,len); 130 pfealist->list[0].cbValue = len + (sizeof(USHORT) * 2); 131 } 132 else 133 pfealist->list[0].cbValue = 0; 134 eaop.fpGEA2List = (PGEA2LIST)0; 135 eaop.fpFEA2List = pfealist; 136 eaop.oError = 0L; 137 rc = DosSetPathInfo(filename,FIL_QUERYEASIZE,(PVOID)&eaop, 138 (ULONG)sizeof(EAOP2),DSPI_WRTTHRU); 139 DosFreeMem(pfealist); 140 if (rc) { 141 Dos_Error(MB_ENTER,rc,HWND_DESKTOP,pszSrcFile,__LINE__, 142 GetPString(IDS_ERRORSETTINGSUBJECTTEXT),filename); 118 memset(pfealist, 0, ealen + 1); 119 pfealist->cbList = ealen; 120 pfealist->list[0].oNextEntryOffset = 0L; 121 pfealist->list[0].fEA = 0; 122 pfealist->list[0].cbName = 8; 123 strcpy(pfealist->list[0].szName, SUBJECT); 124 if (len) { 125 eaval = pfealist->list[0].szName + 9; 126 *(USHORT *) eaval = (USHORT) EAT_ASCII; 127 eaval += sizeof(USHORT); 128 *(USHORT *) eaval = (USHORT) len; 129 eaval += sizeof(USHORT); 130 memcpy(eaval, subject, len); 131 pfealist->list[0].cbValue = len + (sizeof(USHORT) * 2); 143 132 } 144 else 145 ret = 1; // OK 133 else 134 pfealist->list[0].cbValue = 0; 135 eaop.fpGEA2List = (PGEA2LIST) 0; 136 eaop.fpFEA2List = pfealist; 137 eaop.oError = 0L; 138 rc = DosSetPathInfo(filename, FIL_QUERYEASIZE, (PVOID) & eaop, 139 (ULONG) sizeof(EAOP2), DSPI_WRTTHRU); 140 DosFreeMem(pfealist); 141 if (rc) { 142 Dos_Error(MB_ENTER, rc, HWND_DESKTOP, pszSrcFile, __LINE__, 143 GetPString(IDS_ERRORSETTINGSUBJECTTEXT), filename); 144 } 145 else 146 ret = 1; // OK 146 147 } 147 148 }
Note:
See TracChangeset
for help on using the changeset viewer.