Commit 1985aec3b122b12af040c0098f25b63ca15784f5

Authored by Perry Werneck
1 parent 6f1e87d5
Exists in master and in 1 other branch develop

Updating plugin tester.

Makefile.in
... ... @@ -118,7 +118,7 @@ $(OBJDBG)/%.o: \
118 118 $(DEPENDS)
119 119  
120 120 @echo $< ...
121   - @$(MKDIR) `dirname $@`
  121 + @$(MKDIR) $(@D)
122 122  
123 123 @$(CC) \
124 124 $(CFLAGS) \
... ... @@ -130,7 +130,7 @@ $(OBJDBG)/%.o: \
130 130 %.rc
131 131  
132 132 @echo $< ...
133   - @$(MKDIR) `dirname $@`
  133 + @$(MKDIR) $(@D)
134 134 @$(WINDRES) $< -O coff -o $@
135 135  
136 136 #---[ Release Rules ]--------------------------------------------------------------------
... ... @@ -140,7 +140,7 @@ $(OBJRLS)/%.o: \
140 140 $(DEPENDS)
141 141  
142 142 @echo $< ...
143   - @$(MKDIR) `dirname $@`
  143 + @$(MKDIR) $(@D)
144 144 @$(CC) \
145 145 $(CFLAGS) \
146 146 -DNDEBUG=1 \
... ... @@ -150,7 +150,7 @@ $(OBJRLS)/%.o: \
150 150 %.rc
151 151  
152 152 @echo $< ...
153   - @$(MKDIR) `dirname $@`
  153 + @$(MKDIR) $(@D)
154 154 @$(WINDRES) $< -O coff -o $@
155 155  
156 156 #---[ Misc Rules ]-----------------------------------------------------------------------
... ... @@ -159,7 +159,7 @@ $(POTDIR)/$(MODULE_NAME)/%.pot: \
159 159 %.c
160 160  
161 161 @echo $(notdir $@) ...
162   - @$(MKDIR) `dirname $@`
  162 + @$(MKDIR) $(@D)
163 163 @$(XGETTEXT) \
164 164 --language=C \
165 165 --keyword=_ \
... ... @@ -173,7 +173,7 @@ $(POTDIR)/$(MODULE_NAME)/%.pot: \
173 173 %.rc
174 174  
175 175 @echo $< ...
176   - @$(MKDIR) `dirname $@`
  176 + @$(MKDIR) $(@D)
177 177 @touch $@
178 178  
179 179  
... ... @@ -184,47 +184,9 @@ all: \
184 184 $(POTDIR)/$(MODULE_NAME).pot
185 185  
186 186 Release: \
187   - $(BINRLS)/@DLLPREFIX@$(MODULE_NAME)@DLLEXT@ \
  187 + $(BINRLS)/$(MODULE_NAME)@DLLEXT@ \
188 188 $(BINRLS)/$(PACKAGE_NAME)d@EXEEXT@
189 189  
190   -$(BINRLS)/lib$(MODULE_NAME).a: \
191   - $(foreach SRC, $(basename $(CORE_SOURCES)), $(OBJRLS)/$(SRC).o)
192   -
193   - @$(MKDIR) `dirname $@`
194   - @echo $< ...
195   -
196   - @$(AR) rcs $@ $^
197   -
198   -$(BINRLS)/$(MODULE_NAME)@DLLEXT@: \
199   - $(foreach SRC, $(basename $(PLUGIN_SOURCES)), $(OBJRLS)/$(SRC).o) \
200   - $(BINRLS)/lib$(MODULE_NAME).a
201   -
202   - @$(MKDIR) `dirname $@`
203   - @echo $< ...
204   - @$(LD) \
205   - -shared -Wl,-soname,$(@F) \
206   - -o $@ \
207   - $(LDFLAGS) \
208   - $(foreach SRC, $(basename $(PLUGIN_SOURCES)), $(OBJRLS)/$(SRC).o) \
209   - -L$(BINRLS) -l$(MODULE_NAME) \
210   - $(V3270_LIBS) \
211   - $(LIBS) \
212   - $(GTK_LIBS)
213   -
214   -$(BINRLS)/$(PACKAGE_NAME)d@EXEEXT@: \
215   - $(foreach SRC, $(basename $(SERVICE_SOURCES)), $(OBJRLS)/$(SRC).o) \
216   - $(BINRLS)/lib$(MODULE_NAME).a
217   -
218   - @$(MKDIR) `dirname $@`
219   - @echo $< ...
220   - @$(LD) \
221   - -o $@ \
222   - $(foreach SRC, $(basename $(SERVICE_SOURCES)), $(OBJRLS)/$(SRC).o) \
223   - -L$(BINRLS) \
224   - $(LDFLAGS) \
225   - $(LIBS) \
226   - -l$(MODULE_NAME) \
227   - $(GLIB_LIBS)
228 190  
229 191  
230 192 #---[ Install Targets ]------------------------------------------------------------------
... ... @@ -257,31 +219,22 @@ locale: \
257 219 #---[ Debug Targets ]--------------------------------------------------------------------
258 220  
259 221 Debug: \
260   - $(BINDBG)/@DLLPREFIX@$(MODULE_NAME)@DLLEXT@ \
261   - $(BINDBG)/$(MODULE_NAME)@EXEEXT@ \
262   - $(BINDBG)/$(PACKAGE_NAME)d@EXEEXT@
263   -
264   -Debug-plugin: \
265   - $(BINDBG)/@DLLPREFIX@$(MODULE_NAME)@DLLEXT@ \
  222 + $(BINDBG)/$(MODULE_NAME)@DLLEXT@ \
266 223 $(BINDBG)/$(MODULE_NAME)@EXEEXT@
267 224  
268   -Debug-service: \
269   - $(BINDBG)/$(PACKAGE_NAME)d@EXEEXT@
270   -
271 225 $(BINDBG)/lib$(MODULE_NAME).a: \
272 226 $(foreach SRC, $(basename $(CORE_SOURCES)), $(OBJDBG)/$(SRC).o)
273 227  
274   - @$(MKDIR) `dirname $@`
  228 + @$(MKDIR) $(@D)
275 229 @echo $< ...
276 230  
277 231 @$(AR) rcs $@ $^
278 232  
279 233  
280 234 $(BINDBG)/$(MODULE_NAME)@EXEEXT@: \
281   - $(foreach SRC, $(basename $(TEST_SOURCES)), $(OBJDBG)/$(SRC).o) \
282   - $(BINDBG)/@DLLPREFIX@$(MODULE_NAME)@DLLEXT@
  235 + $(foreach SRC, $(basename $(TEST_SOURCES)), $(OBJDBG)/$(SRC).o)
283 236  
284   - @$(MKDIR) `dirname $@`
  237 + @$(MKDIR) $(@D)
285 238 @echo $< ...
286 239 @$(LD) \
287 240 -o $@ \
... ... @@ -290,15 +243,15 @@ $(BINDBG)/$(MODULE_NAME)@EXEEXT@: \
290 243 -Wl,-rpath,$(BINDBG) \
291 244 $(LDFLAGS) \
292 245 $(LIBS) \
293   - -l$(MODULE_NAME) \
294 246 $(V3270_LIBS) \
295   - $(GTK_LIBS)
  247 + $(GTK_LIBS) \
  248 + $(GLIB_LIBS)
296 249  
297 250 $(BINDBG)/$(PACKAGE_NAME)d@EXEEXT@: \
298 251 $(foreach SRC, $(basename $(SERVICE_SOURCES)), $(OBJDBG)/$(SRC).o) \
299 252 $(BINDBG)/lib$(MODULE_NAME).a
300 253  
301   - @$(MKDIR) `dirname $@`
  254 + @$(MKDIR) $(@D)
302 255 @echo $< ...
303 256 @$(LD) \
304 257 -o $@ \
... ... @@ -310,43 +263,11 @@ $(BINDBG)/$(PACKAGE_NAME)d@EXEEXT@: \
310 263 -l$(MODULE_NAME) \
311 264 $(GLIB_LIBS)
312 265  
313   -run-plugin: \
314   - $(BINDBG)/$(MODULE_NAME)@EXEEXT@
315   -
316   - @LD_LIBRARY_PATH=$(BINDBG) \
317   - $(BINDBG)/$(MODULE_NAME)@EXEEXT@
318   -
319   -run-service: \
320   - $(BINDBG)/$(PACKAGE_NAME)d@EXEEXT@
321   -
322   - @LD_LIBRARY_PATH=$(BINDBG) \
323   - $(BINDBG)/$(PACKAGE_NAME)d@EXEEXT@
324   -
325   -$(BINDBG)/@DLLPREFIX@$(MODULE_NAME)@DLLEXT@: \
326   - $(BINDBG)/@DLLPREFIX@$(MODULE_NAME)@DLLEXT@.@PACKAGE_MAJOR_VERSION@
327   -
328   - @echo $< ...
329   - @rm -f $@
330   - @$(LN_S) \
331   - @DLLPREFIX@$(MODULE_NAME)@DLLEXT@.@PACKAGE_MAJOR_VERSION@ \
332   - $@
333   -
334   -$(BINDBG)/@DLLPREFIX@$(MODULE_NAME)@DLLEXT@.@PACKAGE_MAJOR_VERSION@: \
335   - $(BINDBG)/@DLLPREFIX@$(MODULE_NAME)@DLLEXT@.@PACKAGE_MAJOR_VERSION@.@PACKAGE_MINOR_VERSION@
336   -
337   - @rm -f $@
338   - @$(LN_S) \
339   - @DLLPREFIX@$(MODULE_NAME)@DLLEXT@.@PACKAGE_MAJOR_VERSION@.@PACKAGE_MINOR_VERSION@ \
340   - $@
341   -
342   -$(BINDBG)/@DLLPREFIX@$(MODULE_NAME)@DLLEXT@.@PACKAGE_MAJOR_VERSION@.@PACKAGE_MINOR_VERSION@: \
  266 +$(BINDBG)/$(MODULE_NAME)@DLLEXT@: \
343 267 $(foreach SRC, $(basename $(PLUGIN_SOURCES)), $(OBJDBG)/$(SRC).o) \
344 268 $(BINDBG)/lib$(MODULE_NAME).a
345 269  
346   - @rm -f $(BINDBG)/@DLLPREFIX@$(MODULE_NAME)@DLLEXT@
347   - @rm -f $(BINDBG)/@DLLPREFIX@$(MODULE_NAME)@DLLEXT@.@PACKAGE_MAJOR_VERSION@
348   -
349   - @$(MKDIR) `dirname $@`
  270 + @$(MKDIR) $(@D)
350 271 @echo $< ...
351 272 @$(LD) \
352 273 -shared -Wl,-soname,$(@F) \
... ... @@ -358,6 +279,23 @@ $(BINDBG)/@DLLPREFIX@$(MODULE_NAME)@DLLEXT@.@PACKAGE_MAJOR_VERSION@.@PACKAGE_MIN
358 279 $(LIBS) \
359 280 $(GTK_LIBS)
360 281  
  282 +
  283 +run: \
  284 + run-plugin
  285 +
  286 +run-plugin: \
  287 + $(BINDBG)/$(MODULE_NAME)@EXEEXT@
  288 +
  289 + @LD_LIBRARY_PATH=$(BINDBG) \
  290 + $(BINDBG)/$(MODULE_NAME)@EXEEXT@
  291 +
  292 +run-service: \
  293 + $(BINDBG)/$(PACKAGE_NAME)d@EXEEXT@
  294 +
  295 + @LD_LIBRARY_PATH=$(BINDBG) \
  296 + $(BINDBG)/$(PACKAGE_NAME)d@EXEEXT@
  297 +
  298 +
361 299 #---[ Clean Targets ]--------------------------------------------------------------------
362 300  
363 301 clean: \
... ...
src/plugin/plugin.c
... ... @@ -45,6 +45,10 @@
45 45 #include <v3270.h>
46 46 #include <lib3270/ipc.h>
47 47  
  48 + int pw3270_plugin_stop(GtkWidget *window, GtkWidget *terminal) {
  49 + g_object_set_data(G_OBJECT(terminal), "ipc-object-info", NULL);
  50 + }
  51 +
48 52 int pw3270_plugin_start(GtkWidget *window, GtkWidget *terminal) {
49 53  
50 54 // Creates IPC, associate it with the terminal window
... ...
src/testprogram/testprogram.c
... ... @@ -34,13 +34,37 @@
34 34 *
35 35 */
36 36  
  37 + #include <config.h>
37 38 #include <v3270.h>
38 39 #include <lib3270/ipc.h>
39 40 #include <string.h>
40 41 #include <stdlib.h>
41 42  
  43 + /*---[ Globals ]------------------------------------------------------------------------------------*/
  44 +
  45 + const gchar * plugin_path = ".bin/Debug";
  46 + const gchar * plugin_name = "ipc3270." G_MODULE_SUFFIX;
  47 +
42 48 /*---[ Implement ]----------------------------------------------------------------------------------*/
43 49  
  50 + static void close_module(GtkWidget *widget, GModule *module)
  51 + {
  52 + g_message("Closing module %p",module);
  53 +
  54 + static void (*stop)(GtkWidget *window, GtkWidget *terminal) = NULL;
  55 + if(!g_module_symbol(module,"pw3270_plugin_stop",(gpointer) &stop))
  56 + {
  57 + g_message("Can't get stop method from plugin: %s",g_module_error());
  58 + }
  59 + else
  60 + {
  61 + stop(gtk_widget_get_toplevel(widget),widget);
  62 + }
  63 +
  64 + g_module_close(module);
  65 + g_message("Module %p was closed",module);
  66 + }
  67 +
44 68 static void activate(GtkApplication* app, G_GNUC_UNUSED gpointer user_data) {
45 69  
46 70 GtkWidget * window = gtk_application_window_new(app);
... ... @@ -54,9 +78,38 @@
54 78 gtk_container_add(GTK_CONTAINER(window),terminal);
55 79 gtk_widget_show_all (window);
56 80  
57   - pw3270_plugin_start(window, terminal);
  81 + // Load plugin
  82 + {
  83 + g_autofree gchar * plugin = g_build_filename(plugin_path,plugin_name,NULL);
  84 +
  85 + g_message("Loading %s",plugin);
  86 +
  87 + GModule * module = g_module_open(plugin,G_MODULE_BIND_LOCAL);
  88 +
  89 + if(module)
  90 + {
  91 + g_signal_connect (terminal, "destroy", G_CALLBACK(close_module), module);
  92 + }
  93 + else
  94 + {
  95 + g_message("Can't open \"%s\": %s",plugin,g_module_error());
  96 + gtk_main_quit();
  97 + }
  98 +
  99 + static void (*start)(GtkWidget *window, GtkWidget *terminal) = NULL;
  100 + if(!g_module_symbol(module,"pw3270_plugin_start",(gpointer) &start))
  101 + {
  102 + g_message("Can't get start method from \"%s\": %s",plugin,g_module_error());
  103 + gtk_main_quit();
  104 + }
  105 +
  106 + g_message("Starting plugin %p",module);
  107 + start(window,terminal);
  108 +
  109 + }
58 110  
59   - const gchar *url = getenv("LIB3270_DEFAULT_HOST");
  111 + // Setup title.
  112 + const gchar *url = lib3270_get_url(v3270_get_session(terminal));
60 113 if(url) {
61 114  
62 115 v3270_set_url(terminal,url);
... ...