Commit 2ef5a0e87e1817346e2ebec3231336237203ee14
1 parent
24c5f876
Exists in
master
and in
5 other branches
Incluindo tabela de actions no processador de macros
Showing
1 changed file
with
40 additions
and
1 deletions
Show diff stats
src/lib3270/macros.c
... | ... | @@ -33,12 +33,12 @@ |
33 | 33 | #include <errno.h> |
34 | 34 | #include <string.h> |
35 | 35 | #include <stdio.h> |
36 | -// #include <malloc.h> | |
37 | 36 | #include <lib3270.h> |
38 | 37 | #include <lib3270/macros.h> |
39 | 38 | #include <stdlib.h> |
40 | 39 | #include <strings.h> |
41 | 40 | #include "globals.h" |
41 | + #include "utilc.h" | |
42 | 42 | #include "api.h" |
43 | 43 | |
44 | 44 | /*--[ Structs & Defines ]----------------------------------------------------------------------------*/ |
... | ... | @@ -328,6 +328,31 @@ |
328 | 328 | {NULL, NULL} |
329 | 329 | }; |
330 | 330 | |
331 | + #undef DECLARE_LIB3270_ACTION | |
332 | + #undef DECLARE_LIB3270_CLEAR_SELECTION_ACTION | |
333 | + #undef DECLARE_LIB3270_KEY_ACTION | |
334 | + #undef DECLARE_LIB3270_CURSOR_ACTION | |
335 | + #undef DECLARE_LIB3270_FKEY_ACTION | |
336 | + | |
337 | + static const struct _action | |
338 | + { | |
339 | + const char *name; | |
340 | + int (*exec)(H3270 *session); | |
341 | + } | |
342 | + action[] = | |
343 | + { | |
344 | + #define DECLARE_LIB3270_ACTION( name ) { #name, lib3270_ ## name }, | |
345 | + #define DECLARE_LIB3270_CLEAR_SELECTION_ACTION( name ) { #name, lib3270_ ## name }, | |
346 | + #define DECLARE_LIB3270_KEY_ACTION( name ) { #name, lib3270_ ## name }, | |
347 | + #define DECLARE_LIB3270_CURSOR_ACTION( name ) { #name, lib3270_cursor_ ## name }, | |
348 | + #define DECLARE_LIB3270_FKEY_ACTION( name ) /* */ | |
349 | + | |
350 | + #include <lib3270/action_table.h> | |
351 | + | |
352 | + {NULL, NULL} | |
353 | + }; | |
354 | + | |
355 | + | |
331 | 356 | int argc; |
332 | 357 | int f; |
333 | 358 | |
... | ... | @@ -343,6 +368,20 @@ |
343 | 368 | return cmd[f].exec(session,argc,argv); |
344 | 369 | } |
345 | 370 | |
371 | + if(argc == 1) | |
372 | + { | |
373 | + // Search for action | |
374 | + for(f=0;action[f].name;f++) | |
375 | + { | |
376 | + if(!strcasecmp(action[f].name,argv[0])) | |
377 | + { | |
378 | + int rc = action[f].exec(session); | |
379 | + return xs_buffer("%d",rc); | |
380 | + } | |
381 | + } | |
382 | + | |
383 | + } | |
384 | + | |
346 | 385 | // Not found, return NULL |
347 | 386 | return NULL; |
348 | 387 | } | ... | ... |