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 | ... | ... |