diff options
Diffstat (limited to 'windows/pterm.c')
-rw-r--r-- | windows/pterm.c | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/windows/pterm.c b/windows/pterm.c new file mode 100644 index 00000000..bb68245d --- /dev/null +++ b/windows/pterm.c @@ -0,0 +1,65 @@ +#include "putty.h" +#include "storage.h" + +const unsigned cmdline_tooltype = + TOOLTYPE_NONNETWORK | + TOOLTYPE_NO_VERBOSE_OPTION; + +void gui_term_process_cmdline(Conf *conf, char *cmdline) +{ + do_defaults(NULL, conf); + conf_set_str(conf, CONF_remote_cmd, ""); + + cmdline = handle_restrict_acl_cmdline_prefix(cmdline); + if (handle_special_sessionname_cmdline(cmdline, conf) || + handle_special_filemapping_cmdline(cmdline, conf)) + return; + + int argc; + char **argv, **argstart; + split_into_argv(cmdline, &argc, &argv, &argstart); + + for (int i = 0; i < argc; i++) { + char *arg = argv[i]; + int retd = cmdline_process_param( + arg, i+1<argc?argv[i+1]:NULL, 1, conf); + if (retd == -2) { + cmdline_error("option \"%s\" requires an argument", arg); + } else if (retd == 2) { + i++; /* skip next argument */ + } else if (retd == 1) { + continue; /* nothing further needs doing */ + } else if (!strcmp(arg, "-e")) { + if (i+1 < argc) { + /* The command to execute is taken to be the unparsed + * version of the whole remainder of the command line. */ + conf_set_str(conf, CONF_remote_cmd, argstart[i+1]); + return; + } else { + cmdline_error("option \"%s\" requires an argument", arg); + } + } else if (arg[0] == '-') { + cmdline_error("unrecognised option \"%s\"", arg); + } else { + cmdline_error("unexpected non-option argument \"%s\"", arg); + } + } + + cmdline_run_saved(conf); + + conf_set_int(conf, CONF_sharrow_type, SHARROW_BITMAP); +} + +const struct BackendVtable *backend_vt_from_conf(Conf *conf) +{ + return &conpty_backend; +} + +const wchar_t *get_app_user_model_id(void) +{ + return L"SimonTatham.Pterm"; +} + +void gui_terminal_ready(HWND hwnd, Seat *seat, Backend *backend) +{ +} |