Commit 45207323450de74f8b75debfaaf3c420ee20f74b
1 parent
b573200e
Exists in
master
and in
5 other branches
Ajustes para evitar problemas na carga da classe sob windows
Showing
6 changed files
with
39 additions
and
1 deletions
Show diff stats
src/include/pw3270.h
| @@ -83,6 +83,8 @@ | @@ -83,6 +83,8 @@ | ||
| 83 | LIB3270_EXPORT gboolean pw3270_get_boolean(GtkWidget *widget, const gchar *group, const gchar *key, gboolean def); | 83 | LIB3270_EXPORT gboolean pw3270_get_boolean(GtkWidget *widget, const gchar *group, const gchar *key, gboolean def); |
| 84 | LIB3270_EXPORT void pw3270_set_boolean(GtkWidget *widget, const gchar *group, const gchar *key, gint val); | 84 | LIB3270_EXPORT void pw3270_set_boolean(GtkWidget *widget, const gchar *group, const gchar *key, gint val); |
| 85 | 85 | ||
| 86 | + LIB3270_EXPORT gchar * pw3270_get_datadir(const gchar *first_element, ...); | ||
| 87 | + | ||
| 86 | typedef enum pw3270_src | 88 | typedef enum pw3270_src |
| 87 | { | 89 | { |
| 88 | PW3270_SRC_ALL, /**< Screen contents */ | 90 | PW3270_SRC_ALL, /**< Screen contents */ |
src/plugins/rx3270/pluginmain.cc
| @@ -103,6 +103,7 @@ | @@ -103,6 +103,7 @@ | ||
| 103 | RexxThreadContext * threadContext; | 103 | RexxThreadContext * threadContext; |
| 104 | RexxOption options[25]; | 104 | RexxOption options[25]; |
| 105 | RexxContextExit exits[2]; | 105 | RexxContextExit exits[2]; |
| 106 | + RexxLibraryPackage package; | ||
| 106 | 107 | ||
| 107 | memset(options,0,sizeof(options)); | 108 | memset(options,0,sizeof(options)); |
| 108 | memset(exits,0,sizeof(exits)); | 109 | memset(exits,0,sizeof(exits)); |
| @@ -110,12 +111,28 @@ | @@ -110,12 +111,28 @@ | ||
| 110 | exits[0].sysexit_code = RXSIO; | 111 | exits[0].sysexit_code = RXSIO; |
| 111 | exits[0].handler = Rexx_IO_exit; | 112 | exits[0].handler = Rexx_IO_exit; |
| 112 | 113 | ||
| 114 | + // http://www.oorexx.org/docs/rexxpg/c2539.htm | ||
| 115 | + | ||
| 113 | options[0].optionName = DIRECT_EXITS; | 116 | options[0].optionName = DIRECT_EXITS; |
| 114 | options[0].option = (void *) exits; | 117 | options[0].option = (void *) exits; |
| 115 | 118 | ||
| 116 | options[1].optionName = APPLICATION_DATA; | 119 | options[1].optionName = APPLICATION_DATA; |
| 117 | options[1].option = (void *) &appdata; | 120 | options[1].option = (void *) &appdata; |
| 118 | 121 | ||
| 122 | +// options[0].optionName = LOAD_REQUIRED_LIBRARY; | ||
| 123 | +// options[0].option = "rx3270"; | ||
| 124 | + | ||
| 125 | + package.registeredName = "rx3270"; | ||
| 126 | + package.table = &rx3270_package_entry; | ||
| 127 | + | ||
| 128 | + options[2].optionName = REGISTER_LIBRARY; | ||
| 129 | + options[2].option = (void *) &package; | ||
| 130 | + | ||
| 131 | + options[3].optionName = EXTERNAL_CALL_PATH; | ||
| 132 | + options[3].option = pw3270_get_datadir(NULL); | ||
| 133 | + | ||
| 134 | + trace("Rexxdir: \"%s\"",(gchar *) ((void *) options[3].option)); | ||
| 135 | + | ||
| 119 | if(!RexxCreateInterpreter(&instance, &threadContext, options)) | 136 | if(!RexxCreateInterpreter(&instance, &threadContext, options)) |
| 120 | { | 137 | { |
| 121 | GtkWidget *dialog = gtk_message_dialog_new( GTK_WINDOW(gtk_widget_get_toplevel(widget)), | 138 | GtkWidget *dialog = gtk_message_dialog_new( GTK_WINDOW(gtk_widget_get_toplevel(widget)), |
| @@ -198,6 +215,8 @@ | @@ -198,6 +215,8 @@ | ||
| 198 | trace("%s ends",__FUNCTION__); | 215 | trace("%s ends",__FUNCTION__); |
| 199 | } | 216 | } |
| 200 | 217 | ||
| 218 | + g_free(options[3].option); | ||
| 219 | + | ||
| 201 | } | 220 | } |
| 202 | 221 | ||
| 203 | 222 |
src/plugins/rx3270/rx3270.cls
| @@ -27,6 +27,8 @@ | @@ -27,6 +27,8 @@ | ||
| 27 | /* */ | 27 | /* */ |
| 28 | /*-------------------------------------------------------------------------------*/ | 28 | /*-------------------------------------------------------------------------------*/ |
| 29 | 29 | ||
| 30 | +::requires "rx3270" LIBRARY | ||
| 31 | + | ||
| 30 | /*-------------------------------------------------------------------------------*/ | 32 | /*-------------------------------------------------------------------------------*/ |
| 31 | /* 3270 class */ | 33 | /* 3270 class */ |
| 32 | /*-------------------------------------------------------------------------------*/ | 34 | /*-------------------------------------------------------------------------------*/ |
src/plugins/rx3270/rx3270.h
| @@ -124,6 +124,8 @@ | @@ -124,6 +124,8 @@ | ||
| 124 | 124 | ||
| 125 | /*---[ Globals ]---------------------------------------------------------------------------------------------*/ | 125 | /*---[ Globals ]---------------------------------------------------------------------------------------------*/ |
| 126 | 126 | ||
| 127 | + LIB3270_EXPORT RexxPackageEntry rx3270_package_entry; | ||
| 128 | + | ||
| 127 | /*--[ 3270 Session ]-----------------------------------------------------------------------------------------*/ | 129 | /*--[ 3270 Session ]-----------------------------------------------------------------------------------------*/ |
| 128 | 130 | ||
| 129 | #if defined (HAVE_GNUC_VISIBILITY) | 131 | #if defined (HAVE_GNUC_VISIBILITY) |
src/plugins/rx3270/rxapimain.cc
| @@ -83,11 +83,13 @@ BOOL WINAPI DllMain(HANDLE hinst, DWORD dwcallpurpose, LPVOID lpvResvd) | @@ -83,11 +83,13 @@ BOOL WINAPI DllMain(HANDLE hinst, DWORD dwcallpurpose, LPVOID lpvResvd) | ||
| 83 | 83 | ||
| 84 | int librx3270_loaded(void) | 84 | int librx3270_loaded(void) |
| 85 | { | 85 | { |
| 86 | + trace("%s",__FUNCTION__); | ||
| 86 | return 0; | 87 | return 0; |
| 87 | } | 88 | } |
| 88 | 89 | ||
| 89 | int librx3270_unloaded(void) | 90 | int librx3270_unloaded(void) |
| 90 | { | 91 | { |
| 92 | + trace("%s",__FUNCTION__); | ||
| 91 | return 0; | 93 | return 0; |
| 92 | } | 94 | } |
| 93 | 95 | ||
| @@ -167,7 +169,7 @@ RexxPackageEntry rx3270_package_entry = | @@ -167,7 +169,7 @@ RexxPackageEntry rx3270_package_entry = | ||
| 167 | { | 169 | { |
| 168 | STANDARD_PACKAGE_HEADER | 170 | STANDARD_PACKAGE_HEADER |
| 169 | REXX_CURRENT_INTERPRETER_VERSION, // anything after 4.0.0 will work | 171 | REXX_CURRENT_INTERPRETER_VERSION, // anything after 4.0.0 will work |
| 170 | - "pw3270", // name of the package | 172 | + "rx3270", // name of the package |
| 171 | PACKAGE_VERSION, // package information | 173 | PACKAGE_VERSION, // package information |
| 172 | NULL, // no load/unload functions | 174 | NULL, // no load/unload functions |
| 173 | NULL, | 175 | NULL, |
src/pw3270/tools.c
| @@ -185,3 +185,14 @@ LIB3270_EXPORT gchar * pw3270_get_filename(GtkWidget *widget, const gchar *group | @@ -185,3 +185,14 @@ LIB3270_EXPORT gchar * pw3270_get_filename(GtkWidget *widget, const gchar *group | ||
| 185 | 185 | ||
| 186 | return filename; | 186 | return filename; |
| 187 | } | 187 | } |
| 188 | + | ||
| 189 | +LIB3270_EXPORT gchar * pw3270_get_datadir(const gchar *first_element, ...) | ||
| 190 | +{ | ||
| 191 | + va_list args; | ||
| 192 | + gchar *path; | ||
| 193 | + | ||
| 194 | + va_start(args, first_element); | ||
| 195 | + path = filename_from_va(first_element,args); | ||
| 196 | + va_end(args); | ||
| 197 | + return path; | ||
| 198 | +} |