diff options
author | Daniel Silverstone <dsilvers@digital-scurf.org> | 2019-05-05 15:59:30 +0100 |
---|---|---|
committer | Daniel Silverstone <dsilvers@digital-scurf.org> | 2019-05-05 16:00:03 +0100 |
commit | 689458aa6e1ad02e15dbd8f48d8a87bd933ec149 (patch) | |
tree | db0c8fd7f2dd24f05df89431b257db195884908a /frontends/monkey/browser.c | |
parent | 3021142aadf58bf65da1619d3ead92281beaffeb (diff) | |
download | netsurf-689458aa6e1ad02e15dbd8f48d8a87bd933ec149.tar.gz netsurf-689458aa6e1ad02e15dbd8f48d8a87bd933ec149.tar.bz2 |
Monkey: Support WINDOW EXEC WIN n cmd...
Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
Diffstat (limited to 'frontends/monkey/browser.c')
-rw-r--r-- | frontends/monkey/browser.c | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/frontends/monkey/browser.c b/frontends/monkey/browser.c index 69459fb79..50b586fd0 100644 --- a/frontends/monkey/browser.c +++ b/frontends/monkey/browser.c @@ -500,6 +500,39 @@ monkey_window_handle_reload(int argc, char **argv) } } +static void +monkey_window_handle_exec(int argc, char **argv) +{ + struct gui_window *gw; + if (argc < 5) { + moutf(MOUT_ERROR, "WINDOW EXEC ARGS BAD\n"); + } + + gw = monkey_find_window_by_num(atoi(argv[2])); + + if (gw == NULL) { + moutf(MOUT_ERROR, "WINDOW NUM BAD"); + } else { + /* Gather argv[4] onward into a string to pass to js_exec */ + int total = 0; + for (int i = 4; i < argc; ++i) { + total += strlen(argv[i]) + 1; + } + char *cmd = calloc(total, 1); + strcpy(cmd, argv[4]); + for (int i = 5; i < argc; ++i) { + strcat(cmd, " "); + strcat(cmd, argv[i]); + } + /* Now execute the JS */ + + moutf(MOUT_WINDOW, "JS WIN %d RET %s", atoi(argv[2]), + browser_window_exec(gw->bw, cmd, total - 1) ? "TRUE" : "FALSE"); + + free(cmd); + } +} + void monkey_window_handle_command(int argc, char **argv) @@ -517,6 +550,8 @@ monkey_window_handle_command(int argc, char **argv) monkey_window_handle_redraw(argc, argv); } else if (strcmp(argv[1], "RELOAD") == 0) { monkey_window_handle_reload(argc, argv); + } else if (strcmp(argv[1], "EXEC") == 0) { + monkey_window_handle_exec(argc, argv); } else { moutf(MOUT_ERROR, "WINDOW COMMAND UNKNOWN %s\n", argv[1]); } |