- Fixed bug #858010 - defines were read wrongly into the settings dialog (`i' wasn't reset to 0)

- Made Compile and Run execute the installer even if there were warnings


git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@3287 212acab6-be3b-0410-9dea-997c60f758d6
This commit is contained in:
kichik 2003-12-17 16:13:04 +00:00
parent da92941bfc
commit 5f58389c12
2 changed files with 222 additions and 211 deletions

View file

@ -74,11 +74,11 @@ int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, char *cmdParam, int cmd
void ResetInputScript() void ResetInputScript()
{ {
if(g_sdata.input_script) { if(g_sdata.input_script) {
g_sdata.script_alloced = true; g_sdata.script_alloced = true;
g_sdata.script = (char *)GlobalAlloc(GPTR, (lstrlen(g_sdata.input_script)+3)*sizeof(char)); g_sdata.script = (char *)GlobalAlloc(GPTR, (lstrlen(g_sdata.input_script)+3)*sizeof(char));
wsprintf(g_sdata.script,"\"%s\"",g_sdata.input_script); wsprintf(g_sdata.script,"\"%s\"",g_sdata.input_script);
} }
} }
BOOL CALLBACK DialogProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) { BOOL CALLBACK DialogProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) {
@ -87,8 +87,8 @@ BOOL CALLBACK DialogProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) {
switch (msg) { switch (msg) {
case WM_INITDIALOG: case WM_INITDIALOG:
{ {
int argc; int argc;
char **argv; char **argv;
int i, j; int i, j;
int argSpaceSize; int argSpaceSize;
bool chooseCompressor = false; bool chooseCompressor = false;
@ -120,7 +120,7 @@ BOOL CALLBACK DialogProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) {
int n; int n;
g_sdata.script_alloced = true; g_sdata.script_alloced = true;
g_sdata.script = (char *)GlobalAlloc(GPTR,argSpaceSize + 2*(argc-1)*sizeof(char)+1); g_sdata.script = (char *) GlobalAlloc(GPTR,argSpaceSize+2*(argc-1)*sizeof(char)+1);
lstrcpy(g_sdata.script,""); lstrcpy(g_sdata.script,"");
for(i=1; i<argc; i++) { for(i=1; i<argc; i++) {
if(!lstrncmpi(argv[i],"/XSetCompressor ",lstrlen("/XSetCompressor "))) { if(!lstrncmpi(argv[i],"/XSetCompressor ",lstrlen("/XSetCompressor "))) {
@ -151,14 +151,15 @@ BOOL CALLBACK DialogProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) {
g_sdata.script[n-1] = '\0'; g_sdata.script[n-1] = '\0';
} }
PushMRUFile(argv[argc-1]); PushMRUFile(argv[argc-1]);
LocalFree(argv);
} }
if (argSpaceSize)
GlobalFree(argv);
if(g_sdata.compressor == (NCOMPRESSOR)-1) { if(g_sdata.compressor == (NCOMPRESSOR)-1) {
SetCompressor(g_sdata.default_compressor); SetCompressor(g_sdata.default_compressor);
} }
if(chooseCompressor) { if(chooseCompressor) {
DialogBox(g_sdata.hInstance,MAKEINTRESOURCE(DLG_COMPRESSOR),g_sdata.hwnd,(DLGPROC)CompressorProc); DialogBox(g_sdata.hInstance,MAKEINTRESOURCE(DLG_COMPRESSOR),g_sdata.hwnd,(DLGPROC)CompressorProc);
} }
CompileNSISScript(); CompileNSISScript();
return TRUE; return TRUE;
@ -338,15 +339,15 @@ BOOL CALLBACK DialogProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) {
} }
} }
EnableItems(g_sdata.hwnd); EnableItems(g_sdata.hwnd);
if (g_sdata.retcode==0) { if (!g_sdata.retcode) {
MessageBeep(MB_ICONASTERISK); MessageBeep(MB_ICONASTERISK);
if (g_sdata.warnings) SetTitle(g_sdata.hwnd,"Finished with Warnings"); if (g_sdata.warnings)
else { SetTitle(g_sdata.hwnd,"Finished with Warnings");
else
SetTitle(g_sdata.hwnd,"Finished Sucessfully"); SetTitle(g_sdata.hwnd,"Finished Sucessfully");
// Added by Darren Owen (DrO) on 1/10/2003 // Added by Darren Owen (DrO) on 1/10/2003
if(g_sdata.recompile_test) if(g_sdata.recompile_test)
PostMessage(g_sdata.hwnd, WM_COMMAND, LOWORD(IDM_TEST), 0); PostMessage(g_sdata.hwnd, WM_COMMAND, LOWORD(IDC_TEST), 0);
}
} }
else { else {
MessageBeep(MB_ICONEXCLAMATION); MessageBeep(MB_ICONEXCLAMATION);
@ -798,16 +799,17 @@ BOOL CALLBACK SettingsProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam)
switch(msg) { switch(msg) {
case WM_INITDIALOG: case WM_INITDIALOG:
{ {
int i=0; int i = 0;
LRESULT rv; LRESULT rv;
for(i=(int)COMPRESSOR_SCRIPT; i<= (int)COMPRESSOR_BEST; i++) { for(i = (int)COMPRESSOR_SCRIPT; i <= (int)COMPRESSOR_BEST; i++) {
rv = SendDlgItemMessage(hwndDlg, IDC_COMPRESSOR, CB_ADDSTRING, 0, (LPARAM)compressor_display_names[i]); rv = SendDlgItemMessage(hwndDlg, IDC_COMPRESSOR, CB_ADDSTRING, 0, (LPARAM)compressor_display_names[i]);
} }
rv = SendDlgItemMessage(hwndDlg, IDC_COMPRESSOR, CB_SETCURSEL, (WPARAM)g_sdata.default_compressor, (LPARAM)0); rv = SendDlgItemMessage(hwndDlg, IDC_COMPRESSOR, CB_SETCURSEL, (WPARAM)g_sdata.default_compressor, (LPARAM)0);
if(g_sdata.defines) { i = 0;
while(g_sdata.defines[i]) { if (g_sdata.defines) {
while (g_sdata.defines[i]) {
SendDlgItemMessage(hwndDlg, IDC_DEFINES, LB_ADDSTRING, 0, (LPARAM)g_sdata.defines[i]); SendDlgItemMessage(hwndDlg, IDC_DEFINES, LB_ADDSTRING, 0, (LPARAM)g_sdata.defines[i]);
i++; i++;
} }
@ -828,7 +830,7 @@ BOOL CALLBACK SettingsProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam)
int n = SendDlgItemMessage(hwndDlg, IDC_DEFINES, LB_GETCOUNT, 0, 0); int n = SendDlgItemMessage(hwndDlg, IDC_DEFINES, LB_GETCOUNT, 0, 0);
if(n > 0) { if(n > 0) {
g_sdata.defines = (char **)GlobalAlloc(GPTR, (n+1)*sizeof(char *)); g_sdata.defines = (char **)GlobalAlloc(GPTR, (n+1)*sizeof(char *));
for(int i=0; i<n; i++) { for (int i = 0; i < n; i++) {
int len = SendDlgItemMessage(hwndDlg, IDC_DEFINES, LB_GETTEXTLEN, (WPARAM)i, 0); int len = SendDlgItemMessage(hwndDlg, IDC_DEFINES, LB_GETTEXTLEN, (WPARAM)i, 0);
g_sdata.defines[i] = (char *)GlobalAlloc(GPTR, (len+1)*sizeof(char)); g_sdata.defines[i] = (char *)GlobalAlloc(GPTR, (len+1)*sizeof(char));
SendDlgItemMessage(hwndDlg, IDC_DEFINES, LB_GETTEXT, (WPARAM)i, (LPARAM)g_sdata.defines[i]); SendDlgItemMessage(hwndDlg, IDC_DEFINES, LB_GETTEXT, (WPARAM)i, (LPARAM)g_sdata.defines[i]);
@ -837,7 +839,7 @@ BOOL CALLBACK SettingsProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam)
} }
n = SendDlgItemMessage(hwndDlg, IDC_COMPRESSOR, CB_GETCURSEL, (WPARAM)0, (LPARAM)0); n = SendDlgItemMessage(hwndDlg, IDC_COMPRESSOR, CB_GETCURSEL, (WPARAM)0, (LPARAM)0);
if(n >= (int)COMPRESSOR_SCRIPT && n <= (int)COMPRESSOR_BEST) { if (n >= (int)COMPRESSOR_SCRIPT && n <= (int)COMPRESSOR_BEST) {
g_sdata.default_compressor = (NCOMPRESSOR)n; g_sdata.default_compressor = (NCOMPRESSOR)n;
} }
else { else {
@ -879,53 +881,53 @@ BOOL CALLBACK SettingsProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam)
} }
} }
break; break;
case IDLEFT: case IDLEFT:
{ {
int index = SendDlgItemMessage(hwndDlg, IDC_DEFINES, LB_GETCURSEL, 0, 0); int index = SendDlgItemMessage(hwndDlg, IDC_DEFINES, LB_GETCURSEL, 0, 0);
if(index != LB_ERR) { if(index != LB_ERR) {
int n = SendDlgItemMessage(hwndDlg, IDC_DEFINES, LB_GETTEXTLEN, (WPARAM)index, 0); int n = SendDlgItemMessage(hwndDlg, IDC_DEFINES, LB_GETTEXTLEN, (WPARAM)index, 0);
if(n > 0) { if(n > 0) {
char *buf = (char *)GlobalAlloc(GPTR, (n+1)*sizeof(char)); char *buf = (char *)GlobalAlloc(GPTR, (n+1)*sizeof(char));
SendDlgItemMessage(hwndDlg, IDC_DEFINES, LB_GETTEXT, (WPARAM)index, (LPARAM)buf); SendDlgItemMessage(hwndDlg, IDC_DEFINES, LB_GETTEXT, (WPARAM)index, (LPARAM)buf);
char *p = my_strstr(buf,"="); char *p = my_strstr(buf,"=");
if(p) { if(p) {
SendDlgItemMessage(hwndDlg, IDC_VALUE, WM_SETTEXT, 0, (LPARAM)(p+1)); SendDlgItemMessage(hwndDlg, IDC_VALUE, WM_SETTEXT, 0, (LPARAM)(p+1));
*p=0; *p=0;
}
SendDlgItemMessage(hwndDlg, IDC_SYMBOL, WM_SETTEXT, 0, (LPARAM)buf);
GlobalFree(buf);
SendDlgItemMessage(hwndDlg, IDC_DEFINES, LB_DELETESTRING, (WPARAM)index, (LPARAM)buf);
EnableWindow(GetDlgItem(hwndDlg, IDLEFT), FALSE);
} }
SendDlgItemMessage(hwndDlg, IDC_SYMBOL, WM_SETTEXT, 0, (LPARAM)buf);
GlobalFree(buf);
SendDlgItemMessage(hwndDlg, IDC_DEFINES, LB_DELETESTRING, (WPARAM)index, (LPARAM)buf);
EnableWindow(GetDlgItem(hwndDlg, IDLEFT), FALSE);
} }
} }
} break;
case IDC_SYMBOL:
if(HIWORD(wParam) == EN_CHANGE)
{
int n = SendDlgItemMessage(hwndDlg, IDC_SYMBOL, WM_GETTEXTLENGTH, 0, 0);
if(n > 0) {
EnableWindow(GetDlgItem(hwndDlg, IDRIGHT), TRUE);
}
else {
EnableWindow(GetDlgItem(hwndDlg, IDRIGHT), FALSE);
}
}
break;
case IDC_DEFINES:
if(HIWORD(wParam) == LBN_SELCHANGE)
{
int n = SendDlgItemMessage(hwndDlg, IDC_DEFINES, LB_GETCURSEL, 0, 0);
if(n != LB_ERR) {
EnableWindow(GetDlgItem(hwndDlg, IDLEFT), TRUE);
}
else {
EnableWindow(GetDlgItem(hwndDlg, IDLEFT), FALSE);
}
}
break;
}
break; break;
case IDC_SYMBOL:
if(HIWORD(wParam) == EN_CHANGE)
{
int n = SendDlgItemMessage(hwndDlg, IDC_SYMBOL, WM_GETTEXTLENGTH, 0, 0);
if(n > 0) {
EnableWindow(GetDlgItem(hwndDlg, IDRIGHT), TRUE);
}
else {
EnableWindow(GetDlgItem(hwndDlg, IDRIGHT), FALSE);
}
}
break;
case IDC_DEFINES:
if(HIWORD(wParam) == LBN_SELCHANGE)
{
int n = SendDlgItemMessage(hwndDlg, IDC_DEFINES, LB_GETCURSEL, 0, 0);
if(n != LB_ERR) {
EnableWindow(GetDlgItem(hwndDlg, IDLEFT), TRUE);
}
else {
EnableWindow(GetDlgItem(hwndDlg, IDLEFT), FALSE);
}
}
break;
}
break;
} }
} }
return FALSE; return FALSE;

View file

@ -35,79 +35,82 @@ extern char *compressor_names[];
int SetArgv(char *cmdLine, int *argc, char ***argv) int SetArgv(char *cmdLine, int *argc, char ***argv)
{ {
char *p, *arg, *argSpace; char *p, *arg, *argSpace;
int size, argSpaceSize, inquote, copy, slashes; int size, argSpaceSize, inquote, copy, slashes;
size = 2; size = 2;
for (p = cmdLine; *p != '\0'; p++) { for (p = cmdLine; *p != '\0'; p++) {
if ((*p == ' ') || (*p == '\t')) { if ((*p == ' ') || (*p == '\t')) {
size++; size++;
while ((*p == ' ') || (*p == '\t')) { while ((*p == ' ') || (*p == '\t')) {
p++; p++;
} }
if (*p == '\0') { if (*p == '\0') {
break; break;
} }
} }
} }
argSpaceSize = size * sizeof(char *) + lstrlen(cmdLine) + 1; argSpaceSize = size * sizeof(char *) + lstrlen(cmdLine) + 1;
argSpace = (char *) LocalAlloc(GMEM_FIXED, argSpaceSize); argSpace = (char *) GlobalAlloc(GMEM_FIXED, argSpaceSize);
*argv = (char **) argSpace; if (!argSpace)
argSpace += size * sizeof(char *); return 0;
size--;
p = cmdLine; *argv = (char **) argSpace;
for (*argc = 0; *argc < size; (*argc)++) { argSpace += size * sizeof(char *);
(*argv)[*argc] = arg = argSpace; size--;
while ((*p == ' ') || (*p == '\t')) {
p++;
}
if (*p == '\0') {
break;
}
inquote = 0; p = cmdLine;
slashes = 0; for (*argc = 0; *argc < size; (*argc)++) {
while (1) { (*argv)[*argc] = arg = argSpace;
copy = 1; while ((*p == ' ') || (*p == '\t')) {
while (*p == '\\') { p++;
slashes++; }
p++; if (*p == '\0') {
} break;
if (*p == '"') { }
if ((slashes & 1) == 0) {
copy = 0;
if ((inquote) && (p[1] == '"')) {
p++;
copy = 1;
}
else {
inquote = !inquote;
}
}
slashes >>= 1;
}
while (slashes) { inquote = 0;
*arg = '\\'; slashes = 0;
arg++; while (1) {
slashes--; copy = 1;
} while (*p == '\\') {
slashes++;
p++;
}
if (*p == '"') {
if ((slashes & 1) == 0) {
copy = 0;
if ((inquote) && (p[1] == '"')) {
p++;
copy = 1;
}
else {
inquote = !inquote;
}
}
slashes >>= 1;
}
if ((*p == '\0') || (!inquote && ((*p == ' ') || (*p == '\t')))) { while (slashes) {
break; *arg = '\\';
} arg++;
if (copy != 0) { slashes--;
*arg = *p; }
arg++;
} if ((*p == '\0') || (!inquote && ((*p == ' ') || (*p == '\t')))) {
p++; break;
} }
*arg = '\0'; if (copy != 0) {
argSpace = arg + 1; *arg = *p;
} arg++;
(*argv)[*argc] = NULL; }
p++;
}
*arg = '\0';
argSpace = arg + 1;
}
(*argv)[*argc] = NULL;
return argSpaceSize; return argSpaceSize;
} }
@ -321,56 +324,62 @@ void SaveWindowPos(HWND hwnd) {
void RestoreDefines() void RestoreDefines()
{ {
HKEY hKey; HKEY hKey;
HKEY hSubKey; HKEY hSubKey;
if (RegOpenKeyEx(REGSEC,REGKEY,0,KEY_READ,&hKey) == ERROR_SUCCESS) { if (RegOpenKeyEx(REGSEC,REGKEY,0,KEY_READ,&hKey) == ERROR_SUCCESS) {
int n = 0; int n = 0;
DWORD l = sizeof(n); DWORD l = sizeof(n);
DWORD t; DWORD t;
if ((RegQueryValueEx(hKey,REGDEFCOUNT,NULL,&t,(unsigned char*)&n,&l)==ERROR_SUCCESS)&&(t == REG_DWORD)&&(l==sizeof(n))) { if ((RegQueryValueEx(hKey,REGDEFCOUNT,NULL,&t,(unsigned char*)&n,&l)==ERROR_SUCCESS)&&(t == REG_DWORD)&&(l==sizeof(n))) {
if(n > 0) { if(n > 0) {
if (RegCreateKey(hKey,REGDEFSUBKEY,&hSubKey) == ERROR_SUCCESS) { if (RegCreateKey(hKey,REGDEFSUBKEY,&hSubKey) == ERROR_SUCCESS) {
char buf[8]; char buf[8];
g_sdata.defines = (char **)GlobalAlloc(GPTR, (n+1)*sizeof(char *)); g_sdata.defines = (char **)GlobalAlloc(GPTR, (n+1)*sizeof(char *));
for(int i=0; i<n; i++) { if (g_sdata.defines)
wsprintf(buf,"%d",i); {
l = 0; for(int i = 0; i < n; i++) {
if ((RegQueryValueEx(hSubKey,buf,NULL,&t,NULL,&l)==ERROR_SUCCESS)&&(t == REG_SZ)) { wsprintf(buf,"%d",i);
l++; l = 0;
g_sdata.defines[i] = (char *)GlobalAlloc(GPTR, l*sizeof(char)); if ((RegQueryValueEx(hSubKey,buf,NULL,&t,NULL,&l)==ERROR_SUCCESS)&&(t == REG_SZ)) {
RegQueryValueEx(hSubKey,buf,NULL,&t,(unsigned char*)g_sdata.defines[i],&l); l++;
} g_sdata.defines[i] = (char *)GlobalAlloc(GPTR, l*sizeof(char));
} if (g_sdata.defines[i])
g_sdata.defines[n] = NULL; RegQueryValueEx(hSubKey,buf,NULL,&t,(unsigned char*)g_sdata.defines[i],&l);
RegCloseKey(hSubKey); else
} break;
}
} }
g_sdata.defines[n] = NULL;
}
RegCloseKey(hSubKey);
} }
RegCloseKey(hKey); }
} }
RegCloseKey(hKey);
}
} }
void SaveDefines() void SaveDefines()
{ {
HKEY hKey; HKEY hKey;
HKEY hSubKey; HKEY hSubKey;
int n = 0; int n = 0;
if (RegCreateKey(REGSEC,REGKEY,&hKey) == ERROR_SUCCESS) { if (RegCreateKey(REGSEC,REGKEY,&hKey) == ERROR_SUCCESS) {
RegDeleteKey(hKey,REGDEFSUBKEY); RegDeleteKey(hKey,REGDEFSUBKEY);
if(g_sdata.defines) { if(g_sdata.defines) {
if (RegCreateKey(hKey,REGDEFSUBKEY,&hSubKey) == ERROR_SUCCESS) { if (RegCreateKey(hKey,REGDEFSUBKEY,&hSubKey) == ERROR_SUCCESS) {
char buf[8]; char buf[8];
while(g_sdata.defines[n]) { while(g_sdata.defines[n]) {
wsprintf(buf,"%d",n); wsprintf(buf,"%d",n);
RegSetValueEx(hSubKey,buf,0,REG_SZ,(CONST BYTE *)g_sdata.defines[n],lstrlen(g_sdata.defines[n])); RegSetValueEx(hSubKey,buf,0,REG_SZ,(CONST BYTE *)g_sdata.defines[n],lstrlen(g_sdata.defines[n])+1);
n++; n++;
}
RegCloseKey(hSubKey);
}
} }
RegSetValueEx(hKey,REGDEFCOUNT,0,REG_DWORD,(CONST BYTE *)&n,sizeof(n)); RegCloseKey(hSubKey);
RegCloseKey(hKey); }
} }
RegSetValueEx(hKey,REGDEFCOUNT,0,REG_DWORD,(CONST BYTE *)&n,sizeof(n));
RegCloseKey(hKey);
}
} }
void ResetObjects() { void ResetObjects() {
@ -382,7 +391,7 @@ void ResetObjects() {
void ResetDefines() { void ResetDefines() {
if(g_sdata.defines) { if(g_sdata.defines) {
int i=0; int i = 0;
while(g_sdata.defines[i]) { while(g_sdata.defines[i]) {
GlobalFree(g_sdata.defines[i]); GlobalFree(g_sdata.defines[i]);
i++; i++;
@ -520,7 +529,7 @@ char* BuildDefines()
} }
else { else {
buf = (char *)GlobalAlloc(GPTR, sizeof(char)); buf = (char *)GlobalAlloc(GPTR, sizeof(char));
lstrcpy(buf,""); buf[0] = NULL;
} }
return buf; return buf;
@ -694,49 +703,49 @@ void LoadMRUFile(int position)
void RestoreMRUList() void RestoreMRUList()
{ {
HKEY hKey; HKEY hKey;
HKEY hSubKey; HKEY hSubKey;
int n = 0; int n = 0;
int i; int i;
if (RegOpenKeyEx(REGSEC,REGKEY,0,KEY_READ,&hKey) == ERROR_SUCCESS) { if (RegOpenKeyEx(REGSEC,REGKEY,0,KEY_READ,&hKey) == ERROR_SUCCESS) {
if (RegCreateKey(hKey,REGMRUSUBKEY,&hSubKey) == ERROR_SUCCESS) { if (RegCreateKey(hKey,REGMRUSUBKEY,&hSubKey) == ERROR_SUCCESS) {
char buf[8]; char buf[8];
DWORD l; DWORD l;
for(int i=0; i<MRU_LIST_SIZE; i++) { for(int i=0; i<MRU_LIST_SIZE; i++) {
wsprintf(buf,"%d",i); wsprintf(buf,"%d",i);
l = sizeof(g_mru_list[n]); l = sizeof(g_mru_list[n]);
RegQueryValueEx(hSubKey,buf,NULL,NULL,(unsigned char*)g_mru_list[n],&l); RegQueryValueEx(hSubKey,buf,NULL,NULL,(unsigned char*)g_mru_list[n],&l);
if(g_mru_list[n][0] != '\0') { if(g_mru_list[n][0] != '\0') {
n++; n++;
}
}
RegCloseKey(hSubKey);
} }
RegCloseKey(hKey); }
} RegCloseKey(hSubKey);
for(i = n; i < MRU_LIST_SIZE; i++) {
g_mru_list[i][0] = '\0';
} }
RegCloseKey(hKey);
}
for(i = n; i < MRU_LIST_SIZE; i++) {
g_mru_list[i][0] = '\0';
}
BuildMRUMenus(); BuildMRUMenus();
} }
void SaveMRUList() void SaveMRUList()
{ {
HKEY hKey; HKEY hKey;
HKEY hSubKey; HKEY hSubKey;
int i = 0; int i = 0;
if (RegCreateKey(REGSEC,REGKEY,&hKey) == ERROR_SUCCESS) { if (RegCreateKey(REGSEC,REGKEY,&hKey) == ERROR_SUCCESS) {
if (RegCreateKey(hKey,REGMRUSUBKEY,&hSubKey) == ERROR_SUCCESS) { if (RegCreateKey(hKey,REGMRUSUBKEY,&hSubKey) == ERROR_SUCCESS) {
char buf[8]; char buf[8];
for(i = 0; i < MRU_LIST_SIZE; i++) { for(i = 0; i < MRU_LIST_SIZE; i++) {
wsprintf(buf,"%d",i); wsprintf(buf,"%d",i);
RegSetValueEx(hSubKey,buf,0,REG_SZ,(const unsigned char *)g_mru_list[i],lstrlen(g_mru_list[i])); RegSetValueEx(hSubKey,buf,0,REG_SZ,(const unsigned char *)g_mru_list[i],lstrlen(g_mru_list[i]));
} }
RegCloseKey(hSubKey); RegCloseKey(hSubKey);
}
RegCloseKey(hKey);
} }
RegCloseKey(hKey);
}
} }
void ClearMRUList() void ClearMRUList()