Commit 07a80fd06cbb1b0728441886944b583d4e5011de
1 parent
8751048d
Exists in
master
and in
1 other branch
Adding lib3270 actions as commands on trace window.
Showing
1 changed file
with
20 additions
and
1 deletions
Show diff stats
src/trace/exec.c
| ... | ... | @@ -40,6 +40,7 @@ |
| 40 | 40 | #include <lib3270/log.h> |
| 41 | 41 | #include <lib3270/trace.h> |
| 42 | 42 | #include <lib3270/properties.h> |
| 43 | + #include <lib3270/actions.h> | |
| 43 | 44 | #include <v3270.h> |
| 44 | 45 | #include <v3270/trace.h> |
| 45 | 46 | #include <internals.h> |
| ... | ... | @@ -108,6 +109,8 @@ |
| 108 | 109 | |
| 109 | 110 | int v3270_exec_command(GtkWidget *widget, const gchar *text) |
| 110 | 111 | { |
| 112 | + size_t ix; | |
| 113 | + | |
| 111 | 114 | g_return_val_if_fail(GTK_IS_V3270(widget),EINVAL); |
| 112 | 115 | |
| 113 | 116 | H3270 *hSession = v3270_get_session(widget); |
| ... | ... | @@ -147,7 +150,23 @@ |
| 147 | 150 | if(sep) |
| 148 | 151 | { |
| 149 | 152 | *(sep++) = 0; |
| 150 | - set_property(hSession,g_strstrip(cmdline),g_strstrip(sep)); | |
| 153 | + return set_property(hSession,g_strstrip(cmdline),g_strstrip(sep)); | |
| 154 | + } | |
| 155 | + else | |
| 156 | + { | |
| 157 | + // Check for lib3270 actions. | |
| 158 | + const LIB3270_ACTION_ENTRY *actions = lib3270_get_action_table(); | |
| 159 | + | |
| 160 | + for(ix=0; actions[ix].name; ix++) | |
| 161 | + { | |
| 162 | + if(!g_ascii_strcasecmp(actions[ix].name,cmdline)) | |
| 163 | + { | |
| 164 | + lib3270_trace_event(hSession,"Action: %s\n",actions[ix].name); | |
| 165 | + return actions[ix].call(hSession); | |
| 166 | + } | |
| 167 | + | |
| 168 | + } | |
| 169 | + | |
| 151 | 170 | } |
| 152 | 171 | |
| 153 | 172 | return errno = ENOENT; | ... | ... |