Commit c4300650bbacfff454cf40bb5d6e60debeb2e852
1 parent
9f5e1712
Exists in
master
and in
3 other branches
Getting default URL from windows registry.
Showing
1 changed file
with
49 additions
and
6 deletions
Show diff stats
src/core/host.c
| ... | ... | @@ -288,16 +288,59 @@ LIB3270_EXPORT const char * lib3270_get_url(const H3270 *hSession) |
| 288 | 288 | if(hSession->host.url) |
| 289 | 289 | return hSession->host.url; |
| 290 | 290 | |
| 291 | -#ifdef LIB3270_DEFAULT_HOST | |
| 292 | - return LIB3270_DEFAULT_HOST; | |
| 293 | -#else | |
| 294 | - return getenv("LIB3270_DEFAULT_HOST"); | |
| 295 | -#endif // LIB3270_DEFAULT_HOST | |
| 296 | - | |
| 291 | + return lib3270_get_default_host(hSession); | |
| 297 | 292 | } |
| 298 | 293 | |
| 299 | 294 | LIB3270_EXPORT const char * lib3270_get_default_host(const H3270 GNUC_UNUSED(*hSession)) |
| 300 | 295 | { |
| 296 | +#ifdef _WIN32 | |
| 297 | + { | |
| 298 | + HKEY hKey; | |
| 299 | + DWORD disp = 0; | |
| 300 | + LSTATUS rc = RegCreateKeyEx( | |
| 301 | + HKEY_LOCAL_MACHINE, | |
| 302 | + "Software\\" LIB3270_STRINGIZE_VALUE_OF(PRODUCT_NAME), | |
| 303 | + 0, | |
| 304 | + NULL, | |
| 305 | + REG_OPTION_NON_VOLATILE, | |
| 306 | + KEY_QUERY_VALUE|KEY_READ, | |
| 307 | + NULL, | |
| 308 | + &hKey, | |
| 309 | + &disp); | |
| 310 | + | |
| 311 | + if(rc == ERROR_SUCCESS) | |
| 312 | + { | |
| 313 | + static char * default_host = NULL; | |
| 314 | + DWORD cbData = 4096; | |
| 315 | + | |
| 316 | + if(!default_host) | |
| 317 | + { | |
| 318 | + default_host = (char *) malloc(cbData+1); | |
| 319 | + } | |
| 320 | + else | |
| 321 | + { | |
| 322 | + default_host = (char *) realloc(default_host,cbData+1); | |
| 323 | + } | |
| 324 | + | |
| 325 | + DWORD dwRet = RegQueryValueEx(hKey,"host",NULL,NULL,(LPBYTE) default_host, &cbData); | |
| 326 | + | |
| 327 | + RegCloseKey(hKey); | |
| 328 | + | |
| 329 | + trace("***************** %d",dwRet); | |
| 330 | + if(dwRet == ERROR_SUCCESS) | |
| 331 | + { | |
| 332 | + default_host = (char *) realloc(default_host,cbData+1); | |
| 333 | + default_host[cbData] = 0; | |
| 334 | + return default_host; | |
| 335 | + } | |
| 336 | + | |
| 337 | + free(default_host); | |
| 338 | + default_host = NULL; | |
| 339 | + | |
| 340 | + } | |
| 341 | + } | |
| 342 | +#endif // _WIN32 | |
| 343 | + | |
| 301 | 344 | #ifdef LIB3270_DEFAULT_HOST |
| 302 | 345 | return LIB3270_DEFAULT_HOST; |
| 303 | 346 | #else | ... | ... |