1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
|
#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;
CmdlineArgList *arglist = cmdline_arg_list_from_GetCommandLineW();
size_t arglistpos = 0;
while (arglist->args[arglistpos]) {
CmdlineArg *arg = arglist->args[arglistpos++];
CmdlineArg *nextarg = arglist->args[arglistpos];
const char *argstr = cmdline_arg_to_str(arg);
int retd = cmdline_process_param(arg, nextarg, 1, conf);
if (retd == -2) {
cmdline_error("option \"%s\" requires an argument", argstr);
} else if (retd == 2) {
arglistpos++; /* skip next argument */
} else if (retd == 1) {
continue; /* nothing further needs doing */
} else if (!strcmp(argstr, "-e")) {
if (nextarg) {
/* The command to execute is taken to be the unparsed
* version of the whole remainder of the command line. */
char *cmd = cmdline_arg_remainder_utf8(nextarg);
conf_set_utf8(conf, CONF_remote_cmd, cmd);
sfree(cmd);
return;
} else {
cmdline_error("option \"%s\" requires an argument", argstr);
}
} else if (argstr[0] == '-') {
cmdline_error("unrecognised option \"%s\"", argstr);
} else {
cmdline_error("unexpected non-option argument \"%s\"", argstr);
}
}
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)
{
}
|