From 522fe180f1b126ed4e69e79a2aaaea091f380c6d Mon Sep 17 00:00:00 2001 From: perry.werneck@gmail.com Date: Fri, 15 Feb 2013 10:34:11 +0000 Subject: [PATCH] Implementando macros no widget do emulador --- widget.c | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+), 0 deletions(-) diff --git a/widget.c b/widget.c index 5779a64..424c244 100644 --- a/widget.c +++ b/widget.c @@ -33,6 +33,7 @@ #include #include #include + #include #include #ifdef HAVE_MALLOC_H @@ -1542,3 +1543,45 @@ gboolean v3270_is_connected(GtkWidget *widget) g_return_val_if_fail(GTK_IS_V3270(widget),FALSE); return lib3270_connected(GTK_V3270(widget)->host) ? TRUE : FALSE; } + +int v3270_run_script(GtkWidget *widget, const gchar *script) +{ + gchar **ln; + int f; + H3270 * hSession; + + if(!script) + return 0; + + g_return_val_if_fail(GTK_IS_V3270(widget),EINVAL); + + hSession = v3270_get_session(widget); + ln = g_strsplit(script,"\n",-1); + + for(f=0;ln[f];f++) + { + GError * error = NULL; + gint argc = 0; + gchar **argv = NULL; + + if(g_shell_parse_argv(g_strstrip(ln[f]),&argc,&argv,&error)) + { + gchar *rsp = lib3270_run_macro(hSession,(const gchar **) argv); + if(rsp) + g_free(rsp); + } + else + { + g_warning("Error parsing \"%s\": %s",g_strstrip(ln[f]),error->message); + g_error_free(error); + } + + if(argv) + g_strfreev(argv); + + } + + g_strfreev(ln); + + return 0; +} -- libgit2 0.21.2