- 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:
parent
da92941bfc
commit
5f58389c12
2 changed files with 222 additions and 211 deletions
|
@ -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;
|
||||||
|
|
|
@ -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()
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue