From 9f5e1712cb19bcd78e5591f08a416e1a715959dc Mon Sep 17 00:00:00 2001 From: Perry Werneck Date: Wed, 15 Jul 2020 03:31:43 -0300 Subject: [PATCH] Initializing toggle defaults from windows registry (when available). --- src/core/toggles/init.c | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 53 insertions(+), 2 deletions(-) diff --git a/src/core/toggles/init.c b/src/core/toggles/init.c index 31d2bda..5a3ca17 100644 --- a/src/core/toggles/init.c +++ b/src/core/toggles/init.c @@ -116,7 +116,7 @@ void initialize_toggles(H3270 *session) LIB3270_TOGGLE_ID id; void (*upcall)(H3270 *session, const struct lib3270_toggle *t, LIB3270_TOGGLE_TYPE tt); } - upcalls[] = + upcalls[LIB3270_TOGGLE_COUNT] = { { LIB3270_TOGGLE_RECTANGLE_SELECT, @@ -150,15 +150,66 @@ void initialize_toggles(H3270 *session) unsigned int f; + // Set defaults for(f=0;ftoggle[f].upcall = toggle_nop; + session->toggle[f].value = toggle_descriptor[f].def; + } + // Load upcalls for(f=0;f<(sizeof(upcalls)/sizeof(upcalls[0]));f++) session->toggle[upcalls[f].id].upcall = upcalls[f].upcall; +#ifdef _WIN32 + { + HKEY hKey; + DWORD disp = 0; + LSTATUS rc = RegCreateKeyEx( + HKEY_LOCAL_MACHINE, + "Software\\" LIB3270_STRINGIZE_VALUE_OF(PRODUCT_NAME) "\\toggles", + 0, + NULL, + REG_OPTION_NON_VOLATILE, + KEY_QUERY_VALUE|KEY_READ, + NULL, + &hKey, + &disp); + + if(rc == ERROR_SUCCESS) + { + debug("%s: Loading toggles from registry",__FUNCTION__); + for(f=0;fname, + NULL, + NULL, + (LPBYTE) &val, + &cbData + ); + + debug("get(%s)=%d",lib3270_toggle_get_from_id(f)->name,(int) dwRet); + if(dwRet == ERROR_SUCCESS) + { + debug("toggle.%s=%s",lib3270_toggle_get_from_id(f)->name,val ? "True" : "False"); + session->toggle[f].value = (val ? True : False); + } + + } + RegCloseKey(hKey); + } + + } +#endif // _WIN32 + + // Initialize upcalls. for(f=0;ftoggle[f].value = toggle_descriptor[f].def; if(session->toggle[f].value) session->toggle[f].upcall(session,&session->toggle[f],LIB3270_TOGGLE_TYPE_INITIAL); } -- libgit2 0.21.2