Changeset 914
- Timestamp:
- Jan 10, 2008, 2:54:32 AM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/dll/inis.c
r912 r914 24 24 09 Jan 08 SHL Add some missing error reporting 25 25 09 Jan 08 SHL Standardize PrfOpenProfile return checks 26 09 Jan 08 SHL Use CloseProfile to avoid spurious system INI closes 26 27 27 28 ***********************************************************************/ … … 53 54 { 54 55 USHORT size; 55 CHAR ininame[CCHMAXPATH]; 56 CHAR ininame[CCHMAXPATH]; // Must be null string if user or system ini 56 57 HINI hini; 57 58 BOOL working; … … 93 94 INIREC; 94 95 96 /** 97 * Close profile unless it is user or system INI 98 * @param hini is profile handle 99 * @param fSkipIfSystem bypasses close for system INIs 100 */ 101 102 static VOID CloseProfile(HINI hini, BOOL fSkipIfSystem) 103 { 104 BOOL ok = fSkipIfSystem && 105 (hini == HINI_USERPROFILE || hini == HINI_SYSTEMPROFILE); 106 107 if (!ok) { 108 ok = PrfCloseProfile(hini); 109 if (!ok) { 110 Win_Error(HWND_DESKTOP, HWND_DESKTOP, pszSrcFile, __LINE__, 111 "PrfCloseProfile failed for handle 0x%x", hini); 112 } 113 } 114 } 115 95 116 VOID CopyIniThread(VOID * args) 96 117 { … … 98 119 HAB hab2; 99 120 HMQ hmq2; 100 HINI hini 1= NULLHANDLE;101 HINI hini 2= NULLHANDLE;121 HINI hiniFrom = NULLHANDLE; 122 HINI hiniTo = NULLHANDLE; 102 123 PRFPROFILE cprfp; 103 124 CHAR userini[CCHMAXPATH], sysini[CCHMAXPATH]; … … 118 139 if (PrfQueryProfile(hab2, &cprfp)) { 119 140 if (!stricmp(cprfp.pszUserName, inirec->filename1)) 120 hini 1= HINI_USERPROFILE;141 hiniFrom = HINI_USERPROFILE; 121 142 else if (!stricmp(cprfp.pszSysName, inirec->filename1)) 122 hini 1= HINI_SYSTEMPROFILE;143 hiniFrom = HINI_SYSTEMPROFILE; 123 144 if (!stricmp(cprfp.pszUserName, inirec->filename2)) 124 hini 2= HINI_USERPROFILE;145 hiniTo = HINI_USERPROFILE; 125 146 else if (!stricmp(cprfp.pszSysName, inirec->filename2)) 126 hini 2= HINI_SYSTEMPROFILE;127 } 128 if (hini 1== NULLHANDLE) {129 hini 1= PrfOpenProfile(hab2, inirec->filename1);130 if (hini 1== NULLHANDLE) {147 hiniTo = HINI_SYSTEMPROFILE; 148 } 149 if (hiniFrom == NULLHANDLE) { 150 hiniFrom = PrfOpenProfile(hab2, inirec->filename1); 151 if (hiniFrom == NULLHANDLE) { 131 152 Win_Error(HWND_DESKTOP, HWND_DESKTOP, pszSrcFile, __LINE__, 132 153 "PrfOpenProfile failed for %s", inirec->filename1); 133 154 } 134 155 } 135 if (hini 2== NULLHANDLE) {156 if (hiniTo == NULLHANDLE) { 136 157 if (!stricmp(inirec->filename1, inirec->filename2)) 137 hini 2 = hini1;158 hiniTo = hiniFrom; 138 159 else { 139 hini 2= PrfOpenProfile(hab2, inirec->filename2);140 if (hini 2== NULLHANDLE) {160 hiniTo = PrfOpenProfile(hab2, inirec->filename2); 161 if (hiniTo == NULLHANDLE) { 141 162 Win_Error(HWND_DESKTOP, HWND_DESKTOP, pszSrcFile, __LINE__, 142 163 "PrfOpenProfile failed for %s", inirec->filename2); … … 144 165 } 145 166 } 146 if (hini 1 && hini2 && (*inirec->app2 || hini1 != hini2)) {167 if (hiniFrom && hiniTo && (*inirec->app2 || hiniFrom != hiniTo)) { 147 168 148 169 PVOID pDataK, pData; … … 153 174 if (!*inirec->key) { 154 175 if (inirec->confirm && 155 PrfQueryProfileSize(hini 1, (PSZ) ((*inirec->app2) ?176 PrfQueryProfileSize(hiniFrom, (PSZ) ((*inirec->app2) ? 156 177 inirec->app2 : inirec-> 157 178 app), NULL, … … 165 186 goto Abort; 166 187 } 167 if (PrfQueryProfileSize(hini 2,188 if (PrfQueryProfileSize(hiniTo, 168 189 (PSZ) inirec->app, 169 190 NULL, (PULONG) & ulSize) && ulSize) { … … 171 192 if (pDataK) { 172 193 /* get keynames */ 173 if (PrfQueryProfileString(hini 2,194 if (PrfQueryProfileString(hiniTo, 174 195 (PSZ) inirec->app, 175 196 NULL, "\0", pDataK, ulSize)) { … … 177 198 /* step through keynames */ 178 199 while (*pCurrentK) { 179 if (PrfQueryProfileSize(hini 2, inirec->app,200 if (PrfQueryProfileSize(hiniTo, inirec->app, 180 201 pCurrentK, 181 202 (PULONG) & ulSize) && ulSize) { … … 183 204 if (pData) { 184 205 /* get data */ 185 if (PrfQueryProfileData(hini 2, inirec->app,206 if (PrfQueryProfileData(hiniTo, inirec->app, 186 207 pCurrentK, 187 208 pData, (PULONG) & ulSize)) 188 209 /* write data to new ini file */ 189 PrfWriteProfileData(hini 1, ((*inirec->app2) ?210 PrfWriteProfileData(hiniFrom, ((*inirec->app2) ? 190 211 inirec-> 191 212 app2 : inirec->app), … … 205 226 else { 206 227 if (inirec->confirm && 207 PrfQueryProfileSize(hini 1, (PSZ) ((*inirec->app2) ?228 PrfQueryProfileSize(hiniFrom, (PSZ) ((*inirec->app2) ? 208 229 inirec->app2 : inirec-> 209 230 app), … … 220 241 goto Abort; 221 242 } 222 if (PrfQueryProfileSize(hini 2, inirec->app,243 if (PrfQueryProfileSize(hiniTo, inirec->app, 223 244 inirec->key, 224 245 (PULONG) & ulSize) && ulSize) { … … 226 247 if (pData) { 227 248 /* get data */ 228 if (PrfQueryProfileData(hini 2, inirec->app,249 if (PrfQueryProfileData(hiniTo, inirec->app, 229 250 inirec->key, 230 251 pData, (PULONG) & ulSize)) 231 252 /* write data to new ini file */ 232 PrfWriteProfileData(hini 1, ((*inirec->app2) ?253 PrfWriteProfileData(hiniFrom, ((*inirec->app2) ? 233 254 inirec->app2 : inirec->app), 234 255 ((*inirec->key2) ? … … 247 268 inirec->filename2) != MBID_YES) 248 269 goto Abort; 249 PrfWriteProfileData(hini 2,270 PrfWriteProfileData(hiniTo, 250 271 inirec->app, 251 272 ((*inirec->key) ? inirec->key : NULL), … … 255 276 } 256 277 Abort: 257 if (hini 1)258 PrfCloseProfile(hini1);259 if (hini 2 && hini2 != hini1)260 PrfCloseProfile(hini2);278 if (hiniFrom) 279 CloseProfile(hiniFrom, TRUE); 280 if (hiniTo && hiniTo != hiniFrom) 281 CloseProfile(hiniTo, FALSE); 261 282 WinDestroyMsgQueue(hmq2); 262 283 } … … 301 322 static VOID BackupIniThread(VOID * args) 302 323 { 303 PPRFPROFILE prfp = (PPRFPROFILE) 324 PPRFPROFILE prfp = (PPRFPROFILE)args; 304 325 HAB hab2; 305 326 HMQ hmq2; … … 308 329 PVOID pDataA, pDataK, pData; 309 330 PBYTE pCurrentA, pCurrentK; 310 ULONG ulSize = 0L;331 ULONG ulSize; 311 332 PRFPROFILE cprfp; 312 333 CHAR userini[CCHMAXPATH], sysini[CCHMAXPATH]; … … 344 365 } 345 366 else { 367 ulSize = 0; 346 368 if (PrfQueryProfileSize(orig, NULL, NULL, (PULONG) & ulSize) 347 369 && ulSize) { … … 399 421 } 400 422 } 401 PrfCloseProfile(new);402 } 403 PrfCloseProfile(orig);423 CloseProfile(new, FALSE); 424 } 425 CloseProfile(orig, TRUE); 404 426 } 405 427 WinDestroyMsgQueue(hmq2); … … 418 440 PVOID pData; 419 441 PBYTE pCurrent; 420 ULONG ulSize = 0 L;442 ULONG ulSize = 0; 421 443 422 444 WinSendMsg(hwndList, LM_DELETEALL, NULL, NULL); … … 488 510 PVOID pData; 489 511 PBYTE pCurrent; 490 ULONG ulSize = 0 L;512 ULONG ulSize = 0; 491 513 492 514 WinSendMsg(hwndList, LM_DELETEALL, NULL, NULL); … … 614 636 case DID_OK: 615 637 inidata = INSTDATA(hwnd); 616 if (inidata) { 617 638 if (!inidata) 639 Runtime_Error2(pszSrcFile, __LINE__, IDS_NODATATEXT); 640 else { 618 641 CHAR s[8193], app[1024]; 619 642 register CHAR *p; … … 951 974 break; 952 975 } 953 PrfCloseProfile(testini);976 CloseProfile(testini, FALSE); 954 977 testini = PrfOpenProfile(WinQueryAnchorBlock(hwnd), sysini); 955 978 if (testini == NULLHANDLE) { … … 960 983 break; 961 984 } 962 PrfCloseProfile(testini);985 CloseProfile(testini, FALSE); 963 986 memset(&prfp, 0, sizeof(PRFPROFILE)); 964 987 prfp.cchUserName = strlen(sysini); … … 1084 1107 break; 1085 1108 } 1086 PrfCloseProfile(testini);1109 CloseProfile(testini, FALSE); 1087 1110 testini = PrfOpenProfile(WinQueryAnchorBlock(hwnd), sysini); 1088 1111 if (testini == NULLHANDLE) { … … 1093 1116 break; 1094 1117 } 1095 PrfCloseProfile(testini);1118 CloseProfile(testini, FALSE); 1096 1119 /* make copies of new inis */ 1097 1120 *tempuserini = 0; … … 1240 1263 MRESULT EXPENTRY AddIniProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2) 1241 1264 { 1242 INIDATA *inidata ;1265 INIDATA *inidata = INSTDATA(hwnd); 1243 1266 size_t l; 1244 1267 … … 1332 1355 case EN_KILLFOCUS: 1333 1356 inidata = INSTDATA(hwnd); 1334 if (inidata) { 1335 1357 if (!inidata) 1358 Runtime_Error2(pszSrcFile, __LINE__, IDS_NODATATEXT); 1359 else { 1336 1360 CHAR s[CCHMAXPATH], applname[CCHMAXPATH]; 1337 1361 BOOL appchanged = FALSE, keychanged = FALSE; … … 1458 1482 } 1459 1483 else 1460 PrfCloseProfile(hINI);1484 CloseProfile(hINI, FALSE); 1461 1485 } 1462 1486 … … 1843 1867 if (hwndMain && fAutoView) 1844 1868 PostMsg(hwndMain, UM_LOADFILE, MPVOID, MPVOID); 1845 inidata = WinQueryWindowPtr(hwnd, QWL_USER); 1846 if (inidata && hwndStatus) { 1869 inidata = INSTDATA(hwnd); 1870 if (!inidata) 1871 Runtime_Error2(pszSrcFile, __LINE__, IDS_NODATATEXT); 1872 else if (hwndStatus) { 1847 1873 if (*inidata->ininame) { 1848 1874 WinSetWindowText(hwndStatus, GetPString(IDS_INTERNALINIVIEWERTEXT)); … … 1898 1924 case UM_RESCAN: 1899 1925 inidata = INSTDATA(hwnd); 1900 if (inidata) { 1901 if (mp1) { 1902 1903 SHORT numitems, sSelect; 1904 BOOL inprofile; 1905 ULONG size = 0L; 1906 1907 numitems = (SHORT) WinSendDlgItemMsg(hwnd, 1908 INI_APPLIST, 1909 LM_QUERYITEMCOUNT, 1910 MPVOID, MPVOID); 1911 if (!numitems) { 1912 PostMsg(hwnd, WM_COMMAND, MPFROM2SHORT(INI_REFRESH, 0), MPVOID); 1913 return 0; 1914 } 1915 size = 0L; 1916 if (PrfQueryProfileSize(inidata->hini, 1917 (CHAR *) mp1, NULL, (PULONG) & size) && size) 1918 inprofile = TRUE; 1919 else 1920 inprofile = FALSE; 1921 sSelect = (SHORT) WinSendDlgItemMsg(hwnd, 1922 INI_APPLIST, 1923 LM_SEARCHSTRING, 1924 MPFROM2SHORT(LSS_CASESENSITIVE, 1925 LIT_FIRST), 1926 MPFROMP((CHAR *) mp1)); 1927 if (sSelect >= 0) { 1928 if (!inprofile) 1929 WinSendDlgItemMsg(hwnd, 1930 INI_APPLIST, 1931 LM_DELETEITEM, MPFROMSHORT(sSelect), MPVOID); 1932 else if (!strcmp(inidata->applname, (CHAR *) mp1)) 1933 PostMsg(hwnd, 1934 WM_CONTROL, 1935 MPFROM2SHORT(INI_APPLIST, LN_SELECT), 1936 MPFROMLONG(WinWindowFromID(hwnd, INI_APPLIST))); 1937 } 1938 else if (inprofile) 1926 if (!inidata) 1927 Runtime_Error2(pszSrcFile, __LINE__, IDS_NODATATEXT); 1928 else if (mp1) { 1929 SHORT sSelect; 1930 BOOL inprofile; 1931 ULONG size; 1932 SHORT numitems = (SHORT)WinSendDlgItemMsg(hwnd, 1933 INI_APPLIST, 1934 LM_QUERYITEMCOUNT, 1935 MPVOID, MPVOID); 1936 if (!numitems) { 1937 PostMsg(hwnd, WM_COMMAND, MPFROM2SHORT(INI_REFRESH, 0), MPVOID); 1938 return 0; 1939 } 1940 size = 0; 1941 if (PrfQueryProfileSize(inidata->hini, 1942 (CHAR *) mp1, NULL, (PULONG) & size) && size) 1943 inprofile = TRUE; 1944 else 1945 inprofile = FALSE; 1946 sSelect = (SHORT) WinSendDlgItemMsg(hwnd, 1947 INI_APPLIST, 1948 LM_SEARCHSTRING, 1949 MPFROM2SHORT(LSS_CASESENSITIVE, 1950 LIT_FIRST), 1951 MPFROMP((CHAR *) mp1)); 1952 if (sSelect >= 0) { 1953 if (!inprofile) 1939 1954 WinSendDlgItemMsg(hwnd, 1940 1955 INI_APPLIST, 1941 LM_INSERTITEM, 1942 MPFROM2SHORT(LIT_SORTASCENDING, 0), 1943 MPFROMP((CHAR *) mp1)); 1944 if (mp2 && inidata->applname) { 1945 if (!EnumKeyNames(WinWindowFromID(hwnd, INI_KEYLIST), 1946 inidata->hini, inidata->applname)) 1947 PostMsg(hwnd, WM_COMMAND, MPFROM2SHORT(INI_REFRESH, 0), MPVOID); 1948 } 1956 LM_DELETEITEM, MPFROMSHORT(sSelect), MPVOID); 1957 else if (!strcmp(inidata->applname, (CHAR *) mp1)) 1958 PostMsg(hwnd, 1959 WM_CONTROL, 1960 MPFROM2SHORT(INI_APPLIST, LN_SELECT), 1961 MPFROMLONG(WinWindowFromID(hwnd, INI_APPLIST))); 1962 } 1963 else if (inprofile) 1964 WinSendDlgItemMsg(hwnd, 1965 INI_APPLIST, 1966 LM_INSERTITEM, 1967 MPFROM2SHORT(LIT_SORTASCENDING, 0), 1968 MPFROMP((CHAR *) mp1)); 1969 if (mp2 && inidata->applname) { 1970 if (!EnumKeyNames(WinWindowFromID(hwnd, INI_KEYLIST), 1971 inidata->hini, inidata->applname)) 1972 PostMsg(hwnd, WM_COMMAND, MPFROM2SHORT(INI_REFRESH, 0), MPVOID); 1949 1973 } 1950 1974 } … … 1952 1976 1953 1977 case UM_INITIALSIZE: /* kludge */ 1954 inidata = WinQueryWindowPtr(hwnd, QWL_USER); 1955 if (inidata) 1978 inidata = INSTDATA(hwnd); 1979 if (!inidata) 1980 Runtime_Error2(pszSrcFile, __LINE__, IDS_NODATATEXT); 1981 else 1956 1982 inidata->dontclose = TRUE; 1957 1983 return 0; … … 1992 2018 case UM_LOADFILE: 1993 2019 /* load initial file */ 1994 inidata = WinQueryWindowPtr(hwnd, QWL_USER); 1995 if (inidata) { 2020 inidata = INSTDATA(hwnd); 2021 if (!inidata) 2022 Runtime_Error2(pszSrcFile, __LINE__, IDS_NODATATEXT); 2023 else { 1996 2024 if (mp1) { 1997 2025 strcpy(inidata->ininame, (CHAR *) mp1); … … 2005 2033 Win_Error(HWND_DESKTOP, HWND_DESKTOP, pszSrcFile, __LINE__, 2006 2034 "PrfOpenProfile failed for %s", inidata->ininame); 2007 PostMsg(hwnd, WM_CLOSE, MPVOID, MPVOID); 2008 break; 2009 } 2010 WinSendMsg(hwnd, UM_SETUP, MPVOID, MPVOID);2011 WinSendMsg(hwnd, UM_SETDIR, MPVOID, MPVOID); 2012 WinSetWindowPos(WinQueryWindow(hwnd, QW_PARENT),2013 HWND_TOP,2014 0, 0, 0, 0, SWP_SHOW | SWP_ACTIVATE | SWP_ZORDER);2015 EnumAppNames(WinWindowFromID(hwnd, INI_APPLIST), inidata->hini);2016 }2017 else2018 2035 } 2036 else { 2037 WinSendMsg(hwnd, UM_SETUP, MPVOID, MPVOID); 2038 WinSendMsg(hwnd, UM_SETDIR, MPVOID, MPVOID); 2039 WinSetWindowPos(WinQueryWindow(hwnd, QW_PARENT), 2040 HWND_TOP, 2041 0, 0, 0, 0, SWP_SHOW | SWP_ACTIVATE | SWP_ZORDER); 2042 EnumAppNames(WinWindowFromID(hwnd, INI_APPLIST), inidata->hini); 2043 return 0; 2044 } 2045 } 2046 PostMsg(hwnd, WM_CLOSE, MPVOID, MPVOID); 2019 2047 return 0; 2020 2048 … … 2049 2077 (HPS) 0, FALSE, FALSE); 2050 2078 inidata = INSTDATA(hwnd); 2051 if (inidata && inidata->hwndCurrent) 2079 if (!inidata) 2080 Runtime_Error2(pszSrcFile, __LINE__, IDS_NODATATEXT); 2081 else if (inidata->hwndCurrent) 2052 2082 BoxWindow(inidata->hwndCurrent, (HPS) 0, CLR_RED); 2053 2083 } … … 2063 2093 case LN_SETFOCUS: 2064 2094 inidata = INSTDATA(hwnd); 2065 if (inidata) { 2095 if (!inidata) 2096 Runtime_Error2(pszSrcFile, __LINE__, IDS_NODATATEXT); 2097 else { 2066 2098 if (inidata->hwndCurrent) 2067 2099 BoxWindow(inidata->hwndCurrent, (HPS) 0, CLR_PALEGRAY); … … 2074 2106 case LN_ENTER: 2075 2107 case LN_SELECT: 2076 if (SHORT1FROMMP(mp1) == INI_DATALIST)2077 break;2078 2108 { 2079 2109 CHAR applname[CCHMAXPATH], keyname[CCHMAXPATH]; 2080 2110 SHORT sSelect; 2081 2111 2112 if (SHORT1FROMMP(mp1) == INI_DATALIST) 2113 break; 2114 2082 2115 inidata = INSTDATA(hwnd); 2083 if (!inidata || !inidata->hini) 2116 if (!inidata || !inidata->hini) { 2117 Runtime_Error2(pszSrcFile, __LINE__, IDS_NODATATEXT); 2084 2118 break; 2119 } 2085 2120 WinSendMsg(hwnd, UM_SETDIR, MPVOID, MPVOID); 2086 2121 inidata->keyindex = inidata->appindex = 0; … … 2154 2189 WinSetDlgItemText(hwnd, INI_NUMDATA, "0"); 2155 2190 WinSendDlgItemMsg(hwnd, INI_DATALIST, LM_DELETEALL, MPVOID, MPVOID); 2156 inidata = WinQueryWindowPtr(hwnd, QWL_USER);2191 // inidata = WinQueryWindowPtr(hwnd, QWL_USER); // 09 Jan 08 SHL 2157 2192 } 2158 2193 return 0; … … 2160 2195 case UM_SETUP: 2161 2196 inidata = INSTDATA(hwnd); 2162 if (inidata) { 2163 2197 if (!inidata) 2198 Runtime_Error2(pszSrcFile, __LINE__, IDS_NODATATEXT); 2199 else { 2164 2200 PRFPROFILE prfp; 2165 2201 CHAR sysini[CCHMAXPATH + 81]; … … 2192 2228 WinSetWindowText(WinQueryWindow(hwnd, QW_PARENT), 2193 2229 GetPString(IDS_INIQUERYPRFFAILEDTEXT)); 2194 } 2195 else 2196 PostMsg(hwnd, WM_CLOSE, MPVOID, MPVOID); 2230 return 0; 2231 } 2232 2233 PostMsg(hwnd, WM_CLOSE, MPVOID, MPVOID); 2197 2234 return 0; 2198 2235 … … 2203 2240 case VK_DELETE: 2204 2241 inidata = INSTDATA(hwnd); 2205 if ( inidata) {2206 2207 SHORT cmd;2208 2209 cmd = (inidata->hwndCurrent &&2210 WinQueryWindowUShort(inidata->hwndCurrent, QWS_ID) ==2211 INI_APPLIST) ? INI_DELETEAPP :INI_DELETEKEY;2242 if (!inidata) 2243 Runtime_Error2(pszSrcFile, __LINE__, IDS_NODATATEXT); 2244 else { 2245 SHORT cmd = inidata->hwndCurrent && 2246 WinQueryWindowUShort(inidata->hwndCurrent, QWS_ID) == 2247 INI_APPLIST ? 2248 INI_DELETEAPP :INI_DELETEKEY; 2212 2249 PostMsg(hwnd, WM_COMMAND, MPFROM2SHORT(cmd, 0), MPVOID); 2213 2250 } … … 2223 2260 case IDM_FINDFIRST: 2224 2261 inidata = INSTDATA(hwnd); 2225 if (inidata) { 2226 if (inidata->hwndCurrent) { 2227 2228 STRINGINPARMS sip; 2229 static CHAR tofind[258] = ""; 2230 SHORT x, z; 2231 2232 if (SHORT1FROMMP(mp1) == IDM_FINDFIRST || !*tofind) { 2262 if (!inidata) 2263 Runtime_Error2(pszSrcFile, __LINE__, IDS_NODATATEXT); 2264 else if (inidata->hwndCurrent) { 2265 STRINGINPARMS sip; 2266 static CHAR tofind[258] = ""; 2267 SHORT x, z; 2268 2269 if (SHORT1FROMMP(mp1) == IDM_FINDFIRST || !*tofind) { 2270 z = LIT_FIRST; 2271 memset(&sip, 0, sizeof(sip)); 2272 sip.help = GetPString(IDS_INISEARCHHELPTEXT); 2273 sip.prompt = GetPString(IDS_INISEARCHPROMPTTEXT); 2274 sip.inputlen = 257; 2275 sip.ret = tofind; 2276 sip.title = GetPString(IDS_INISEARCHTITLETEXT); 2277 if (WinDlgBox(HWND_DESKTOP, 2278 hwnd, 2279 InputDlgProc, FM3ModHandle, STR_FRAME, &sip)) { 2280 rstrip(tofind); 2281 if (!*tofind) { 2282 DosBeep(50, 100); 2283 break; 2284 } 2285 } 2286 else 2287 break; 2288 } 2289 else { 2290 z = (SHORT) WinSendMsg(inidata->hwndCurrent, 2291 LM_QUERYSELECTION, 2292 MPFROM2SHORT(LIT_CURSOR, 0), MPVOID); 2293 if (z < 0) 2233 2294 z = LIT_FIRST; 2234 memset(&sip, 0, sizeof(sip)); 2235 sip.help = GetPString(IDS_INISEARCHHELPTEXT); 2236 sip.prompt = GetPString(IDS_INISEARCHPROMPTTEXT); 2237 sip.inputlen = 257; 2238 sip.ret = tofind; 2239 sip.title = GetPString(IDS_INISEARCHTITLETEXT); 2240 if (WinDlgBox(HWND_DESKTOP, 2241 hwnd, 2242 InputDlgProc, FM3ModHandle, STR_FRAME, &sip)) { 2243 rstrip(tofind); 2244 if (!*tofind) { 2245 DosBeep(50, 100); 2246 break; 2247 } 2248 } 2249 else 2250 break; 2251 } 2252 else { 2253 z = (SHORT) WinSendMsg(inidata->hwndCurrent, 2254 LM_QUERYSELECTION, 2255 MPFROM2SHORT(LIT_CURSOR, 0), MPVOID); 2256 if (z < 0) 2257 z = LIT_FIRST; 2258 } 2259 x = (SHORT) WinSendMsg(inidata->hwndCurrent, 2260 LM_SEARCHSTRING, 2261 MPFROM2SHORT(LSS_SUBSTRING, z), 2262 MPFROMP(tofind)); 2263 if (x >= 0 && x > z) { 2264 WinSendMsg(inidata->hwndCurrent, 2265 LM_SETTOPINDEX, MPFROM2SHORT(x, 0), MPVOID); 2266 WinSendMsg(inidata->hwndCurrent, 2267 LM_SELECTITEM, 2268 MPFROM2SHORT(x, 0), MPFROM2SHORT(TRUE, 0)); 2269 } 2270 else 2271 DosBeep(250, 100); 2272 } 2295 } 2296 x = (SHORT) WinSendMsg(inidata->hwndCurrent, 2297 LM_SEARCHSTRING, 2298 MPFROM2SHORT(LSS_SUBSTRING, z), 2299 MPFROMP(tofind)); 2300 if (x >= 0 && x > z) { 2301 WinSendMsg(inidata->hwndCurrent, 2302 LM_SETTOPINDEX, MPFROM2SHORT(x, 0), MPVOID); 2303 WinSendMsg(inidata->hwndCurrent, 2304 LM_SELECTITEM, 2305 MPFROM2SHORT(x, 0), MPFROM2SHORT(TRUE, 0)); 2306 } 2307 else 2308 DosBeep(250, 100); 2273 2309 } 2274 2310 break; … … 2276 2312 case IDM_FILTER: 2277 2313 inidata = INSTDATA(hwnd); 2278 if (inidata) { 2279 2280 SHORT numitems; 2281 2282 numitems = (SHORT) WinSendDlgItemMsg(hwnd, 2283 INI_APPLIST, 2284 LM_QUERYITEMCOUNT, 2285 MPVOID, MPVOID); 2314 if (!inidata) 2315 Runtime_Error2(pszSrcFile, __LINE__, IDS_NODATATEXT); 2316 else { 2317 SHORT numitems = (SHORT)WinSendDlgItemMsg(hwnd, 2318 INI_APPLIST, 2319 LM_QUERYITEMCOUNT, 2320 MPVOID, MPVOID); 2286 2321 if (numitems) 2287 2322 WinDlgBox(HWND_DESKTOP, … … 2296 2331 case IDM_INFO: 2297 2332 case IDM_MOVE: 2298 inidata = WinQueryWindowPtr(hwnd, QWL_USER);2333 inidata = INSTDATA(hwnd); 2299 2334 if (!inidata || !*inidata->ininame) 2300 break; 2301 if (mp2) { 2302 2303 INIREC *inirec; 2304 2305 inirec = xmallocz(sizeof(INIREC), pszSrcFile, __LINE__); 2335 Runtime_Error2(pszSrcFile, __LINE__, IDS_NODATATEXT); 2336 else if (mp2) { 2337 INIREC *inirec = xmallocz(sizeof(INIREC), pszSrcFile, __LINE__); 2306 2338 if (inirec) { 2307 2339 *inirec = *(INIREC *) mp2; … … 2319 2351 2320 2352 case IDM_COMPARE: 2321 inidata = WinQueryWindowPtr(hwnd, QWL_USER);2353 inidata = INSTDATA(hwnd); 2322 2354 if (!inidata || !*inidata->ininame) 2323 break; 2324 if (mp2) { 2325 2326 INIREC *inirec; 2327 2328 inirec = xmalloc(sizeof(INIREC), pszSrcFile, __LINE__); 2355 Runtime_Error2(pszSrcFile, __LINE__, IDS_NODATATEXT); 2356 else if (mp2) { 2357 INIREC *inirec = xmalloc(sizeof(INIREC), pszSrcFile, __LINE__); 2329 2358 if (inirec) { 2330 2359 strcpy(inirec->filename2, (CHAR *) (mp2)); … … 2345 2374 case INI_RENAMEAPP: 2346 2375 case INI_RENAMEKEY: 2347 inidata = WinQueryWindowPtr(hwnd, QWL_USER); 2348 if (!inidata || 2349 !*inidata->ininame || 2376 inidata = INSTDATA(hwnd); 2377 if (!inidata) { 2378 Runtime_Error2(pszSrcFile, __LINE__, IDS_NODATATEXT); 2379 break; 2380 } 2381 if (!*inidata->ininame || 2350 2382 !*inidata->applname || 2351 2383 (!*inidata->keyname && … … 2354 2386 break; 2355 2387 { 2356 INIREC *inirec; 2357 2358 inirec = xmallocz(sizeof(INIREC), pszSrcFile, __LINE__); 2388 INIREC *inirec = xmallocz(sizeof(INIREC), pszSrcFile, __LINE__); 2359 2389 if (inirec) { 2360 2390 inirec->size = sizeof(INIREC); … … 2388 2418 case INI_BACKUPINI: 2389 2419 inidata = INSTDATA(hwnd); 2390 if (inidata && *inidata->ininame) { 2391 2420 if (!inidata) 2421 Runtime_Error2(pszSrcFile, __LINE__, IDS_NODATATEXT); 2422 else if (*inidata->ininame) { 2423 // 09 Jan 08 SHL fixme to complain 2392 2424 CHAR filename[CCHMAXPATH], *p; 2393 2425 … … 2445 2477 case INI_CHANGEINI: 2446 2478 inidata = INSTDATA(hwnd); 2447 if (inidata) { 2479 if (!inidata) 2480 Runtime_Error2(pszSrcFile, __LINE__, IDS_NODATATEXT); 2481 else { 2448 2482 if (WinDlgBox(HWND_DESKTOP, 2449 2483 hwnd, … … 2459 2493 case INI_SWAPINI: 2460 2494 inidata = INSTDATA(hwnd); 2461 if (inidata) { 2495 if (!inidata) 2496 Runtime_Error2(pszSrcFile, __LINE__, IDS_NODATATEXT); 2497 else { 2462 2498 if (WinDlgBox(HWND_DESKTOP, 2463 2499 hwnd, … … 2473 2509 case IDM_NEXTWINDOW: 2474 2510 inidata = INSTDATA(hwnd); 2475 if (inidata) { 2511 if (!inidata) 2512 Runtime_Error2(pszSrcFile, __LINE__, IDS_NODATATEXT); 2513 else { 2476 2514 inidata->currid++; 2477 2515 if (inidata->currid > INI_DATALIST) … … 2483 2521 case IDM_PREVWINDOW: 2484 2522 inidata = INSTDATA(hwnd); 2485 if (inidata) { 2523 if (!inidata) 2524 Runtime_Error2(pszSrcFile, __LINE__, IDS_NODATATEXT); 2525 else { 2486 2526 inidata->currid--; 2487 2527 if (inidata->currid < INI_APPLIST) … … 2493 2533 case INI_CONFIRM: 2494 2534 inidata = INSTDATA(hwnd); 2495 if (inidata) { 2535 if (!inidata) 2536 Runtime_Error2(pszSrcFile, __LINE__, IDS_NODATATEXT); 2537 else { 2496 2538 inidata->confirm = (inidata->confirm) ? FALSE : TRUE; 2497 2539 WinCheckMenuItem(inidata->hwndMenu, INI_CONFIRM, inidata->confirm); … … 2503 2545 case INI_ADDENTRY: 2504 2546 inidata = INSTDATA(hwnd); 2505 if (inidata) { 2547 if (!inidata) 2548 Runtime_Error2(pszSrcFile, __LINE__, IDS_NODATATEXT); 2549 else { 2506 2550 inidata->edit = (SHORT1FROMMP(mp1) == INI_EDITENTRY); 2507 2551 WinDlgBox(HWND_DESKTOP, … … 2512 2556 case INI_OTHERPROFILE: 2513 2557 inidata = INSTDATA(hwnd); 2514 if (inidata) { 2515 2558 if (!inidata) 2559 Runtime_Error2(pszSrcFile, __LINE__, IDS_NODATATEXT); 2560 else { 2516 2561 CHAR filename[CCHMAXPATH + 81], *p; 2517 2562 FILESTATUS3 fsa; … … 2547 2592 if (*inidata->ininame) { 2548 2593 if (inidata->hini) 2549 PrfCloseProfile(inidata->hini);2594 CloseProfile(inidata->hini, FALSE); 2550 2595 *inidata->ininame = 0; 2551 2596 } … … 2562 2607 case INI_USERPROFILE: 2563 2608 inidata = INSTDATA(hwnd); 2564 if ( inidata) {2565 if (inidata->hini &&2566 inidata->hini != HINI_SYSTEMPROFILE && 2567 inidata->hini != HINI_USERPROFILE)2568 PrfCloseProfile(inidata->hini);2609 if (!inidata) 2610 Runtime_Error2(pszSrcFile, __LINE__, IDS_NODATATEXT); 2611 else { 2612 if (inidata->hini && *inidata->ininame) 2613 CloseProfile(inidata->hini, FALSE); 2569 2614 *inidata->ininame = 0; 2570 2615 inidata->hini = HINI_USERPROFILE; … … 2577 2622 case INI_SYSTEMPROFILE: 2578 2623 inidata = INSTDATA(hwnd); 2579 if ( inidata) {2580 if (inidata->hini &&2581 inidata->hini != HINI_SYSTEMPROFILE && 2582 inidata->hini != HINI_USERPROFILE)2583 PrfCloseProfile(inidata->hini);2624 if (!inidata) 2625 Runtime_Error2(pszSrcFile, __LINE__, IDS_NODATATEXT); 2626 else { 2627 if (inidata->hini && *inidata->ininame) 2628 CloseProfile(inidata->hini, FALSE); 2584 2629 *inidata->ininame = 0; 2585 2630 inidata->hini = HINI_SYSTEMPROFILE; … … 2592 2637 case INI_REFRESH: 2593 2638 inidata = INSTDATA(hwnd); 2594 if (inidata) { 2639 if (!inidata) 2640 Runtime_Error2(pszSrcFile, __LINE__, IDS_NODATATEXT); 2641 else { 2595 2642 WinSendMsg(hwnd, UM_SETDIR, MPVOID, MPVOID); 2596 2643 EnumAppNames(WinWindowFromID(hwnd, INI_APPLIST), inidata->hini); … … 2600 2647 case INI_DELETEKEY: 2601 2648 inidata = INSTDATA(hwnd); 2602 if (inidata && *inidata->applname && *inidata->keyname) { 2649 if (!inidata) 2650 Runtime_Error2(pszSrcFile, __LINE__, IDS_NODATATEXT); 2651 else if (*inidata->applname && *inidata->keyname) { 2603 2652 2604 2653 SHORT keyindex = inidata->keyindex; … … 2634 2683 case INI_DELETEAPP: 2635 2684 inidata = INSTDATA(hwnd); 2636 if (inidata && *inidata->applname) { 2685 if (!inidata) 2686 Runtime_Error2(pszSrcFile, __LINE__, IDS_NODATATEXT); 2687 // 09 Jan 08 SHL fixme to complain? 2688 else if (*inidata->applname) { 2637 2689 2638 2690 SHORT appindex = inidata->appindex; … … 2695 2747 WinStoreWindowPos(FM2Str, 2696 2748 "INIWindowPos", WinQueryWindow(hwnd, QW_PARENT)); 2697 inidata = WinQueryWindowPtr(hwnd, QWL_USER);2749 // inidata = WinQueryWindowPtr(hwnd, QWL_USER); // 09 Jan 08 SHL 2698 2750 } 2699 2751 WinDestroyWindow(WinQueryWindow(hwnd, QW_PARENT)); … … 2701 2753 2702 2754 case WM_DESTROY: 2703 inidata = INSTDATA(hwnd);2704 2755 { 2705 2756 BOOL dontclose = FALSE; 2706 2757 2707 if (inidata) { 2758 inidata = INSTDATA(hwnd); 2759 if (!inidata) 2760 Runtime_Error2(pszSrcFile, __LINE__, IDS_NODATATEXT); 2761 else { 2708 2762 dontclose = inidata->dontclose; 2709 if (inidata->hini )2710 PrfCloseProfile(inidata->hini);2763 if (inidata->hini != NULLHANDLE && *inidata->ininame) 2764 CloseProfile(inidata->hini, FALSE); 2711 2765 if (inidata->data) 2712 2766 free(inidata->data);
Note:
See TracChangeset
for help on using the changeset viewer.