Commit 75f87222a875d96d5599fd08f0d7f1e0f5e56cdc
1 parent
b749aacb
Exists in
master
and in
5 other branches
Reactivating use of windows registry.
Showing
6 changed files
with
57 additions
and
108 deletions
Show diff stats
configure.ac
... | ... | @@ -85,7 +85,7 @@ else |
85 | 85 | fi |
86 | 86 | |
87 | 87 | case "$host" in |
88 | - *-mingw32) | |
88 | + *-mingw32|*-pc-msys) | |
89 | 89 | |
90 | 90 | EXEEXT=".exe" |
91 | 91 | DLLPREFIX="" |
... | ... | @@ -106,6 +106,8 @@ case "$host" in |
106 | 106 | STATIC_LDFLAGS="-static-libstdc++ -static-libgcc -static" |
107 | 107 | DLL_LDFLAGS="-shared -Wl,--add-stdcall-alias" |
108 | 108 | |
109 | + AC_DEFINE(ENABLE_WINDOWS_REGISTRY) | |
110 | + | |
109 | 111 | AC_CONFIG_FILES(win/makeruntime.sh) |
110 | 112 | AC_CONFIG_FILES(win/copydeps.sh) |
111 | 113 | AC_CONFIG_FILES(win/$PACKAGE_TARNAME.nsi) |
... | ... | @@ -239,7 +241,7 @@ AC_CHECK_HEADER(libintl.h, [ |
239 | 241 | AC_DEFINE(HAVE_LIBINTL, 1) |
240 | 242 | |
241 | 243 | case "$host" in |
242 | - *-mingw32) | |
244 | + *-mingw32|*-pc-msys) | |
243 | 245 | INTL_LIBS="-lintl" |
244 | 246 | ;; |
245 | 247 | |
... | ... | @@ -376,7 +378,7 @@ AC_ARG_ENABLE([pic], |
376 | 378 | esac |
377 | 379 | |
378 | 380 | dnl case "$host" in |
379 | -dnl *-mingw32) | |
381 | +dnl *-mingw32|*-pc-msys) | |
380 | 382 | dnl app_cv_pic="no" |
381 | 383 | dnl ;; |
382 | 384 | dnl |
... | ... | @@ -449,7 +451,7 @@ AC_ARG_WITH([inet-ntop], [AS_HELP_STRING([--with-inet-ntop], [Assume that inet_n |
449 | 451 | if test "$app_cv_inet_ntop" == "auto"; then |
450 | 452 | |
451 | 453 | case "$host" in |
452 | - *-mingw32) | |
454 | + *-mingw32|*-pc-msys) | |
453 | 455 | app_cv_inet_ntop="yes" |
454 | 456 | ;; |
455 | 457 | ... | ... |
src/include/config.h.in
src/pw3270/common/common.h
... | ... | @@ -87,14 +87,14 @@ |
87 | 87 | |
88 | 88 | void restore_window_from_config(const gchar *group, const gchar *key, GtkWidget *hwnd); |
89 | 89 | |
90 | -#ifdef HAVE_WIN_REGISTRY | |
90 | +#ifdef ENABLE_WINDOWS_REGISTRY | |
91 | 91 | gboolean get_registry_handle(const gchar *group, HKEY *hKey, REGSAM samDesired); |
92 | 92 | void registry_foreach(HKEY parent, const gchar *name,void (*cbk)(const gchar *key, const gchar *val, gpointer *user_data), gpointer *user_data); |
93 | 93 | void registry_set_double(HKEY hKey, const gchar *key, gdouble value); |
94 | 94 | gboolean registry_get_double(HKEY hKey, const gchar *key, gdouble *value); |
95 | 95 | #else |
96 | 96 | GKeyFile * get_application_keyfile(void); |
97 | -#endif // HAVE_WIN_REGISTRY | |
97 | +#endif // ENABLE_WINDOWS_REGISTRY | |
98 | 98 | |
99 | 99 | |
100 | 100 | #endif | ... | ... |
src/pw3270/common/config.c
... | ... | @@ -43,7 +43,6 @@ |
43 | 43 | #ifdef WIN32 |
44 | 44 | |
45 | 45 | #include <windows.h> |
46 | - // #define HAVE_WIN_REGISTRY 1 | |
47 | 46 | |
48 | 47 | #ifndef KEY_WOW64_64KEY |
49 | 48 | #define KEY_WOW64_64KEY 0x0100 |
... | ... | @@ -57,7 +56,7 @@ |
57 | 56 | |
58 | 57 | /*--[ Globals ]--------------------------------------------------------------------------------------*/ |
59 | 58 | |
60 | -#ifdef HAVE_WIN_REGISTRY | |
59 | +#ifdef ENABLE_WINDOWS_REGISTRY | |
61 | 60 | |
62 | 61 | static const gchar * registry_path = "SOFTWARE"; |
63 | 62 | |
... | ... | @@ -65,11 +64,11 @@ |
65 | 64 | |
66 | 65 | static GKeyFile * program_config = NULL; |
67 | 66 | |
68 | -#endif // HAVE_WIN_REGISTRY | |
67 | +#endif // ENABLE_WINDOWS_REGISTRY | |
69 | 68 | |
70 | 69 | /*--[ Implement ]------------------------------------------------------------------------------------*/ |
71 | 70 | |
72 | -#ifdef HAVE_WIN_REGISTRY | |
71 | +#ifdef ENABLE_WINDOWS_REGISTRY | |
73 | 72 | |
74 | 73 | enum REG_KEY |
75 | 74 | { |
... | ... | @@ -270,11 +269,11 @@ |
270 | 269 | return g_build_filename(g_get_user_config_dir(),name,NULL); |
271 | 270 | |
272 | 271 | } |
273 | -#endif // #ifdef HAVE_WIN_REGISTRY | |
272 | +#endif // #ifdef ENABLE_WINDOWS_REGISTRY | |
274 | 273 | |
275 | 274 | gboolean get_boolean_from_config(const gchar *group, const gchar *key, gboolean def) |
276 | 275 | { |
277 | -#ifdef HAVE_WIN_REGISTRY | |
276 | +#ifdef ENABLE_WINDOWS_REGISTRY | |
278 | 277 | gboolean ret = def; |
279 | 278 | HKEY hKey; |
280 | 279 | |
... | ... | @@ -308,14 +307,14 @@ |
308 | 307 | else |
309 | 308 | return val; |
310 | 309 | } |
311 | -#endif // HAVE_WIN_REGISTRY | |
310 | +#endif // ENABLE_WINDOWS_REGISTRY | |
312 | 311 | |
313 | 312 | return def; |
314 | 313 | } |
315 | 314 | |
316 | 315 | gint get_integer_from_config(const gchar *group, const gchar *key, gint def) |
317 | 316 | { |
318 | -#ifdef HAVE_WIN_REGISTRY | |
317 | +#ifdef ENABLE_WINDOWS_REGISTRY | |
319 | 318 | |
320 | 319 | HKEY key_handle; |
321 | 320 | |
... | ... | @@ -351,7 +350,7 @@ |
351 | 350 | else |
352 | 351 | return val; |
353 | 352 | } |
354 | -#endif // HAVE_WIN_REGISTRY | |
353 | +#endif // ENABLE_WINDOWS_REGISTRY | |
355 | 354 | |
356 | 355 | return def; |
357 | 356 | } |
... | ... | @@ -359,7 +358,7 @@ |
359 | 358 | |
360 | 359 | gchar * get_string_from_config(const gchar *group, const gchar *key, const gchar *def) |
361 | 360 | { |
362 | -#ifdef HAVE_WIN_REGISTRY | |
361 | +#ifdef ENABLE_WINDOWS_REGISTRY | |
363 | 362 | |
364 | 363 | HKEY key_handle; |
365 | 364 | unsigned long datalen = 4096; |
... | ... | @@ -406,12 +405,12 @@ |
406 | 405 | |
407 | 406 | return NULL; |
408 | 407 | |
409 | -#endif // HAVE_WIN_REGISTRY | |
408 | +#endif // ENABLE_WINDOWS_REGISTRY | |
410 | 409 | } |
411 | 410 | |
412 | 411 | void configuration_init(void) |
413 | 412 | { |
414 | -#ifndef HAVE_WIN_REGISTRY | |
413 | +#ifndef ENABLE_WINDOWS_REGISTRY | |
415 | 414 | gchar *filename = search_for_ini(); |
416 | 415 | |
417 | 416 | if(program_config) |
... | ... | @@ -426,14 +425,14 @@ void configuration_init(void) |
426 | 425 | g_free(filename); |
427 | 426 | } |
428 | 427 | |
429 | -#endif // HAVE_WIN_REGISTRY | |
428 | +#endif // ENABLE_WINDOWS_REGISTRY | |
430 | 429 | } |
431 | 430 | |
432 | 431 | static void set_string(const gchar *group, const gchar *key, const gchar *fmt, va_list args) |
433 | 432 | { |
434 | 433 | gchar * value = g_strdup_vprintf(fmt,args); |
435 | 434 | |
436 | -#ifdef HAVE_WIN_REGISTRY | |
435 | +#ifdef ENABLE_WINDOWS_REGISTRY | |
437 | 436 | |
438 | 437 | gchar * path = g_strdup_printf("%s\\%s\\%s",registry_path,g_get_application_name(),group); |
439 | 438 | HKEY hKey; |
... | ... | @@ -466,7 +465,7 @@ void set_string_to_config(const gchar *group, const gchar *key, const gchar *fmt |
466 | 465 | |
467 | 466 | void set_boolean_to_config(const gchar *group, const gchar *key, gboolean val) |
468 | 467 | { |
469 | -#ifdef HAVE_WIN_REGISTRY | |
468 | +#ifdef ENABLE_WINDOWS_REGISTRY | |
470 | 469 | |
471 | 470 | HKEY hKey; |
472 | 471 | DWORD disp; |
... | ... | @@ -502,13 +501,13 @@ void set_boolean_to_config(const gchar *group, const gchar *key, gboolean val) |
502 | 501 | if(program_config) |
503 | 502 | g_key_file_set_boolean(program_config,group,key,val); |
504 | 503 | |
505 | -#endif // HAVE_WIN_REGISTRY | |
504 | +#endif // ENABLE_WINDOWS_REGISTRY | |
506 | 505 | |
507 | 506 | } |
508 | 507 | |
509 | 508 | void set_integer_to_config(const gchar *group, const gchar *key, gint val) |
510 | 509 | { |
511 | -#ifdef HAVE_WIN_REGISTRY | |
510 | +#ifdef ENABLE_WINDOWS_REGISTRY | |
512 | 511 | |
513 | 512 | HKEY hKey; |
514 | 513 | DWORD disp; |
... | ... | @@ -544,13 +543,13 @@ void set_integer_to_config(const gchar *group, const gchar *key, gint val) |
544 | 543 | if(program_config) |
545 | 544 | g_key_file_set_integer(program_config,group,key,val); |
546 | 545 | |
547 | -#endif // HAVE_WIN_REGISTRY | |
546 | +#endif // ENABLE_WINDOWS_REGISTRY | |
548 | 547 | |
549 | 548 | } |
550 | 549 | |
551 | 550 | void configuration_deinit(void) |
552 | 551 | { |
553 | -#ifdef HAVE_WIN_REGISTRY | |
552 | +#ifdef ENABLE_WINDOWS_REGISTRY | |
554 | 553 | |
555 | 554 | #else |
556 | 555 | |
... | ... | @@ -576,7 +575,7 @@ void configuration_deinit(void) |
576 | 575 | g_key_file_free(program_config); |
577 | 576 | program_config = NULL; |
578 | 577 | |
579 | -#endif // HAVE_WIN_REGISTRY | |
578 | +#endif // ENABLE_WINDOWS_REGISTRY | |
580 | 579 | } |
581 | 580 | |
582 | 581 | gchar * build_data_filename(const gchar *first_element, ...) |
... | ... | @@ -606,7 +605,7 @@ gchar * filename_from_va(const gchar *first_element, va_list args) |
606 | 605 | |
607 | 606 | g_autofree gchar * suffix = g_string_free(result, FALSE); |
608 | 607 | |
609 | -#if defined( HAVE_WIN_REGISTRY ) | |
608 | +#if defined( ENABLE_WINDOWS_REGISTRY ) | |
610 | 609 | for(p=0;p<G_N_ELEMENTS(appname) && !result;p++) |
611 | 610 | { |
612 | 611 | g_autofree gchar * path = g_strconcat("Software\\",appname[p],NULL); |
... | ... | @@ -639,7 +638,7 @@ gchar * filename_from_va(const gchar *first_element, va_list args) |
639 | 638 | } |
640 | 639 | |
641 | 640 | } |
642 | -#endif // HAVE_WIN_REGISTRY | |
641 | +#endif // ENABLE_WINDOWS_REGISTRY | |
643 | 642 | |
644 | 643 | #ifdef _WIN32 |
645 | 644 | for(p=0;p<G_N_ELEMENTS(appname) && !result;p++) |
... | ... | @@ -680,7 +679,7 @@ gchar * filename_from_va(const gchar *first_element, va_list args) |
680 | 679 | return g_build_filename(".",suffix,NULL); |
681 | 680 | } |
682 | 681 | |
683 | -#ifdef HAVE_WIN_REGISTRY | |
682 | +#ifdef ENABLE_WINDOWS_REGISTRY | |
684 | 683 | gboolean get_registry_handle(const gchar *group, HKEY *hKey, REGSAM samDesired) |
685 | 684 | { |
686 | 685 | gboolean ret; |
... | ... | @@ -703,7 +702,7 @@ GKeyFile * get_application_keyfile(void) |
703 | 702 | configuration_init(); |
704 | 703 | return program_config; |
705 | 704 | } |
706 | -#endif // HAVE_WIN_REGISTRY | |
705 | +#endif // ENABLE_WINDOWS_REGISTRY | |
707 | 706 | |
708 | 707 | static const struct _WindowState |
709 | 708 | { |
... | ... | @@ -719,7 +718,7 @@ GKeyFile * get_application_keyfile(void) |
719 | 718 | |
720 | 719 | void save_window_state_to_config(const gchar *group, const gchar *key, GdkWindowState CurrentState) |
721 | 720 | { |
722 | -#if defined( HAVE_WIN_REGISTRY ) | |
721 | +#if defined( ENABLE_WINDOWS_REGISTRY ) | |
723 | 722 | |
724 | 723 | gchar * path = g_strdup_printf("%s\\%s\\%s\\%s",registry_path,g_get_application_name(),group,key); |
725 | 724 | |
... | ... | @@ -751,12 +750,12 @@ void save_window_state_to_config(const gchar *group, const gchar *key, GdkWindow |
751 | 750 | |
752 | 751 | g_free(id); |
753 | 752 | |
754 | -#endif // HAVE_WIN_REGISTRY | |
753 | +#endif // ENABLE_WINDOWS_REGISTRY | |
755 | 754 | } |
756 | 755 | |
757 | 756 | void save_window_size_to_config(const gchar *group, const gchar *key, GtkWidget *hwnd) |
758 | 757 | { |
759 | -#if defined( HAVE_WIN_REGISTRY ) | |
758 | +#if defined( ENABLE_WINDOWS_REGISTRY ) | |
760 | 759 | |
761 | 760 | gchar * path = g_strdup_printf("%s\\%s\\%s\\%s",registry_path,g_get_application_name(),group,key); |
762 | 761 | |
... | ... | @@ -786,10 +785,10 @@ void save_window_size_to_config(const gchar *group, const gchar *key, GtkWidget |
786 | 785 | |
787 | 786 | g_free(id); |
788 | 787 | |
789 | -#endif // HAVE_WIN_REGISTRY | |
788 | +#endif // ENABLE_WINDOWS_REGISTRY | |
790 | 789 | } |
791 | 790 | |
792 | -#if defined( HAVE_WIN_REGISTRY ) | |
791 | +#if defined( ENABLE_WINDOWS_REGISTRY ) | |
793 | 792 | static void restore_window_from_regkey(GtkWidget *hwnd, HKEY hKey, const gchar *path) |
794 | 793 | { |
795 | 794 | int f; |
... | ... | @@ -835,11 +834,11 @@ static void restore_window_from_regkey(GtkWidget *hwnd, HKEY hKey, const gchar * |
835 | 834 | |
836 | 835 | |
837 | 836 | } |
838 | -#endif // HAVE_WIN_REGISTRY | |
837 | +#endif // ENABLE_WINDOWS_REGISTRY | |
839 | 838 | |
840 | 839 | void restore_window_from_config(const gchar *group, const gchar *key, GtkWidget *hwnd) |
841 | 840 | { |
842 | -#if defined( HAVE_WIN_REGISTRY ) | |
841 | +#if defined( ENABLE_WINDOWS_REGISTRY ) | |
843 | 842 | |
844 | 843 | gchar * path = g_strdup_printf("%s\\%s\\%s\\%s",registry_path,g_get_application_name(),group,key); |
845 | 844 | HKEY hKey; |
... | ... | @@ -885,7 +884,7 @@ void restore_window_from_config(const gchar *group, const gchar *key, GtkWidget |
885 | 884 | |
886 | 885 | g_free(id); |
887 | 886 | |
888 | -#endif // HAVE_WIN_REGISTRY | |
887 | +#endif // ENABLE_WINDOWS_REGISTRY | |
889 | 888 | |
890 | 889 | } |
891 | 890 | ... | ... |
src/pw3270/print.c
... | ... | @@ -272,7 +272,7 @@ static gchar * enum_to_string(GType type, guint enum_value) |
272 | 272 | |
273 | 273 | trace("Saving settings PrintSettings=%p page_setup=%p",settings,pgsetup); |
274 | 274 | |
275 | -#ifdef HAVE_WIN_REGISTRY | |
275 | +#ifdef ENABLE_WINDOWS_REGISTRY | |
276 | 276 | HKEY registry; |
277 | 277 | |
278 | 278 | if(get_registry_handle("print",®istry,KEY_SET_VALUE)) |
... | ... | @@ -625,7 +625,7 @@ static gchar * enum_to_string(GType type, guint enum_value) |
625 | 625 | |
626 | 626 | // Load page and print settings |
627 | 627 | { |
628 | -#ifdef HAVE_WIN_REGISTRY | |
628 | +#ifdef ENABLE_WINDOWS_REGISTRY | |
629 | 629 | |
630 | 630 | HKEY registry; |
631 | 631 | ... | ... |
src/pw3270/window.c
... | ... | @@ -95,6 +95,8 @@ |
95 | 95 | NULL |
96 | 96 | }; |
97 | 97 | |
98 | +static GtkWidget * trace_window = NULL; | |
99 | + | |
98 | 100 | /*--[ Implement ]------------------------------------------------------------------------------------*/ |
99 | 101 | |
100 | 102 | #if GTK_CHECK_VERSION(3,0,0) |
... | ... | @@ -157,65 +159,7 @@ |
157 | 159 | |
158 | 160 | } |
159 | 161 | |
160 | - /* | |
161 | - static void g_trace(H3270 *hSession, const char *fmt, va_list args) | |
162 | - { | |
163 | - gchar *ptr = g_strdup_vprintf(fmt,args); | |
164 | - | |
165 | - if(tracefile) | |
166 | - { | |
167 | - // Has trace file, use it | |
168 | - int err; | |
169 | - | |
170 | - FILE *out = fopen(tracefile,"a"); | |
171 | - err = errno; | |
172 | - | |
173 | - if(!out) | |
174 | - { | |
175 | - // Error opening trace file, notify user and disable it | |
176 | - GtkWidget *popup = gtk_message_dialog_new_with_markup( | |
177 | - GTK_WINDOW(pw3270_get_toplevel()), | |
178 | - GTK_DIALOG_MODAL|GTK_DIALOG_DESTROY_WITH_PARENT, | |
179 | - GTK_MESSAGE_ERROR,GTK_BUTTONS_CLOSE, | |
180 | - _( "Can't save trace data to file %s" ),tracefile); | |
181 | - | |
182 | - gtk_window_set_title(GTK_WINDOW(popup),_("Can't open file")); | |
183 | - | |
184 | - gtk_message_dialog_format_secondary_markup(GTK_MESSAGE_DIALOG(popup),"%s",strerror(err)); | |
185 | - | |
186 | - gtk_dialog_run(GTK_DIALOG(popup)); | |
187 | - gtk_widget_destroy(popup); | |
188 | - | |
189 | - tracefile = NULL; | |
190 | - } | |
191 | - else | |
192 | - { | |
193 | - fprintf(out,"%s",ptr); | |
194 | - fclose(out); | |
195 | - } | |
196 | - } | |
197 | - else | |
198 | - { | |
199 | - // No trace file, open standard window | |
200 | - gchar * utftext = g_convert_with_fallback(ptr,-1,"UTF-8",lib3270_get_display_charset(hSession),"?",NULL,NULL,NULL); | |
201 | - | |
202 | - if(!trace_window) | |
203 | - { | |
204 | - trace_window = v3270_trace_new_from_session(hSession); | |
205 | - v3270_trace_set_destroy_on_close(trace_window,TRUE); | |
206 | - g_signal_connect(trace_window, "destroy", G_CALLBACK(trace_window_destroy), hSession); | |
207 | - gtk_window_set_default_size(GTK_WINDOW(trace_window),590,430); | |
208 | - gtk_widget_show(trace_window); | |
209 | - } | |
210 | - v3270_trace_printf(trace_window,"%s",utftext); | |
211 | - g_free(utftext); | |
212 | - } | |
213 | - | |
214 | - g_free(ptr); | |
215 | - } | |
216 | - */ | |
217 | - | |
218 | - static void trace_file(G_GNUC_UNUSED H3270 *hSession, void * userdata, const char *fmt, va_list args) | |
162 | + static void trace_on_file(G_GNUC_UNUSED H3270 *hSession, void * userdata, const char *fmt, va_list args) | |
219 | 163 | { |
220 | 164 | int err; |
221 | 165 | |
... | ... | @@ -255,6 +199,9 @@ |
255 | 199 | lib3270_set_toggle(hSession,LIB3270_TOGGLE_SCREEN_TRACE,0); |
256 | 200 | lib3270_set_toggle(hSession,LIB3270_TOGGLE_EVENT_TRACE,0); |
257 | 201 | lib3270_set_toggle(hSession,LIB3270_TOGGLE_NETWORK_TRACE,0); |
202 | + | |
203 | + trace_window = NULL; | |
204 | + | |
258 | 205 | } |
259 | 206 | |
260 | 207 | struct trace_data |
... | ... | @@ -265,20 +212,21 @@ |
265 | 212 | |
266 | 213 | static gboolean bg_trace_window(struct trace_data *data) |
267 | 214 | { |
268 | - GtkWidget * widget = v3270_trace_new_from_session(data->hSession,data->text); | |
215 | + if(!trace_window) | |
216 | + trace_window = v3270_trace_new_from_session(data->hSession,data->text); | |
269 | 217 | |
270 | - v3270_trace_set_destroy_on_close(widget,TRUE); | |
218 | + v3270_trace_set_destroy_on_close(trace_window,TRUE); | |
271 | 219 | |
272 | - g_signal_connect(widget, "destroy", G_CALLBACK(trace_window_destroy), data->hSession); | |
220 | + g_signal_connect(trace_window, "destroy", G_CALLBACK(trace_window_destroy), data->hSession); | |
273 | 221 | |
274 | - gtk_widget_show_all(widget); | |
222 | + gtk_widget_show_all(trace_window); | |
275 | 223 | |
276 | 224 | g_free(data->text); |
277 | 225 | |
278 | 226 | return FALSE; |
279 | 227 | } |
280 | 228 | |
281 | - static void trace_window(G_GNUC_UNUSED H3270 *hSession, G_GNUC_UNUSED void * userdata, const char *fmt, va_list args) | |
229 | + static void trace_on_window(G_GNUC_UNUSED H3270 *hSession, G_GNUC_UNUSED void * userdata, const char *fmt, va_list args) | |
282 | 230 | { |
283 | 231 | struct trace_data * data = g_new0(struct trace_data,1); |
284 | 232 | |
... | ... | @@ -296,11 +244,11 @@ |
296 | 244 | |
297 | 245 | if(tracefile) |
298 | 246 | { |
299 | - lib3270_set_trace_handler(pw3270_get_session(widget),trace_file,(void *) widget); | |
247 | + lib3270_set_trace_handler(pw3270_get_session(widget),trace_on_file,(void *) widget); | |
300 | 248 | } |
301 | 249 | else |
302 | 250 | { |
303 | - lib3270_set_trace_handler(pw3270_get_session(widget),trace_window,(void *) widget); | |
251 | + lib3270_set_trace_handler(pw3270_get_session(widget),trace_on_window,(void *) widget); | |
304 | 252 | } |
305 | 253 | |
306 | 254 | if(host) | ... | ... |