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,12 +33,12 @@ | ||
33 | #include <errno.h> | 33 | #include <errno.h> |
34 | #include <string.h> | 34 | #include <string.h> |
35 | #include <stdio.h> | 35 | #include <stdio.h> |
36 | -// #include <malloc.h> | ||
37 | #include <lib3270.h> | 36 | #include <lib3270.h> |
38 | #include <lib3270/macros.h> | 37 | #include <lib3270/macros.h> |
39 | #include <stdlib.h> | 38 | #include <stdlib.h> |
40 | #include <strings.h> | 39 | #include <strings.h> |
41 | #include "globals.h" | 40 | #include "globals.h" |
41 | + #include "utilc.h" | ||
42 | #include "api.h" | 42 | #include "api.h" |
43 | 43 | ||
44 | /*--[ Structs & Defines ]----------------------------------------------------------------------------*/ | 44 | /*--[ Structs & Defines ]----------------------------------------------------------------------------*/ |
@@ -328,6 +328,31 @@ | @@ -328,6 +328,31 @@ | ||
328 | {NULL, NULL} | 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 | int argc; | 356 | int argc; |
332 | int f; | 357 | int f; |
333 | 358 | ||
@@ -343,6 +368,20 @@ | @@ -343,6 +368,20 @@ | ||
343 | return cmd[f].exec(session,argc,argv); | 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 | // Not found, return NULL | 385 | // Not found, return NULL |
347 | return NULL; | 386 | return NULL; |
348 | } | 387 | } |