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,6 +40,7 @@ | ||
40 | #include <lib3270/log.h> | 40 | #include <lib3270/log.h> |
41 | #include <lib3270/trace.h> | 41 | #include <lib3270/trace.h> |
42 | #include <lib3270/properties.h> | 42 | #include <lib3270/properties.h> |
43 | + #include <lib3270/actions.h> | ||
43 | #include <v3270.h> | 44 | #include <v3270.h> |
44 | #include <v3270/trace.h> | 45 | #include <v3270/trace.h> |
45 | #include <internals.h> | 46 | #include <internals.h> |
@@ -108,6 +109,8 @@ | @@ -108,6 +109,8 @@ | ||
108 | 109 | ||
109 | int v3270_exec_command(GtkWidget *widget, const gchar *text) | 110 | int v3270_exec_command(GtkWidget *widget, const gchar *text) |
110 | { | 111 | { |
112 | + size_t ix; | ||
113 | + | ||
111 | g_return_val_if_fail(GTK_IS_V3270(widget),EINVAL); | 114 | g_return_val_if_fail(GTK_IS_V3270(widget),EINVAL); |
112 | 115 | ||
113 | H3270 *hSession = v3270_get_session(widget); | 116 | H3270 *hSession = v3270_get_session(widget); |
@@ -147,7 +150,23 @@ | @@ -147,7 +150,23 @@ | ||
147 | if(sep) | 150 | if(sep) |
148 | { | 151 | { |
149 | *(sep++) = 0; | 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 | return errno = ENOENT; | 172 | return errno = ENOENT; |