X-Git-Url: https://asedeno.scripts.mit.edu/gitweb/?a=blobdiff_plain;f=unix%2Fuxplink.c;h=1d3db4c26f253f8b82bc31d4725b176180e9c403;hb=631b4948073922c2618441fb374c7e6fc22bd1d8;hp=13dea4417141a688b11db2a280b60c912eb7e719;hpb=3bfb6ad651d33a3bb052365ea029a32502656e0b;p=PuTTY.git diff --git a/unix/uxplink.c b/unix/uxplink.c index 13dea441..1d3db4c2 100644 --- a/unix/uxplink.c +++ b/unix/uxplink.c @@ -82,6 +82,8 @@ char *platform_default_s(const char *name) return dupstr(getenv("TERM")); if (!strcmp(name, "UserName")) return get_username(); + if (!strcmp(name, "SerialLine")) + return dupstr("/dev/ttyS0"); return NULL; } @@ -394,6 +396,25 @@ int from_backend(void *frontend_handle, int is_stderr, return osize + esize; } +int from_backend_untrusted(void *frontend_handle, const char *data, int len) +{ + /* + * No "untrusted" output should get here (the way the code is + * currently, it's all diverted by FLAG_STDERR). + */ + assert(!"Unexpected call to from_backend_untrusted()"); + return 0; /* not reached */ +} + +int get_userpass_input(prompts_t *p, unsigned char *in, int inlen) +{ + int ret; + ret = cmdline_get_passwd_input(p, in, inlen); + if (ret == -1) + ret = console_get_userpass_input(p, in, inlen); + return ret; +} + /* * Handle data from a local tty in PARMRK format. */ @@ -508,6 +529,8 @@ static void usage(void) printf(" -4 -6 force use of IPv4 or IPv6\n"); printf(" -C enable compression\n"); printf(" -i key private key file for authentication\n"); + printf(" -noagent disable use of Pageant\n"); + printf(" -agent enable use of Pageant\n"); printf(" -m file read remote command(s) from file\n"); printf(" -s remote command is an SSH subsystem (SSH-2 only)\n"); printf(" -N don't start a shell/command (SSH-2 only)\n"); @@ -534,8 +557,6 @@ int main(int argc, char **argv) void *ldisc, *logctx; long now; - ssh_get_line = console_get_line; - fdlist = NULL; fdcount = fdsize = 0; /* @@ -608,11 +629,9 @@ int main(int argc, char **argv) errors = 1; } } else if (*p) { - if (!*cfg.host) { + if (!cfg_launchable(&cfg)) { char *q = p; - do_defaults(NULL, &cfg); - /* * If the hostname starts with "telnet:", set the * protocol to Telnet and process the string as a @@ -684,7 +703,7 @@ int main(int argc, char **argv) { Config cfg2; do_defaults(host, &cfg2); - if (loaded_session || cfg2.host[0] == '\0') { + if (loaded_session || !cfg_launchable(&cfg2)) { /* No settings for this host; use defaults */ /* (or session was already loaded with -load) */ strncpy(cfg.host, host, sizeof(cfg.host) - 1); @@ -738,7 +757,7 @@ int main(int argc, char **argv) if (errors) return 1; - if (!*cfg.host) { + if (!cfg_launchable(&cfg)) { usage(); } @@ -794,7 +813,7 @@ int main(int argc, char **argv) cfg.host[p1] = '\0'; } - if (!cfg.remote_cmd_ptr && !*cfg.remote_cmd) + if (!cfg.remote_cmd_ptr && !*cfg.remote_cmd && !*cfg.ssh_nc_host) flags |= FLAG_INTERACTIVE; /* @@ -882,7 +901,7 @@ int main(int argc, char **argv) FD_SET_MAX(signalpipe[0], maxfd, rset); if (connopen && !sending && - back->socket(backhandle) != NULL && + back->connected(backhandle) && back->sendok(backhandle) && back->sendbuffer(backhandle) < MAX_STDIN_BACKLOG) { /* If we're OK to send, then try to read from stdin. */ @@ -997,7 +1016,7 @@ int main(int argc, char **argv) char buf[4096]; int ret; - if (connopen && back->socket(backhandle) != NULL) { + if (connopen && back->connected(backhandle)) { ret = read(0, buf, sizeof(buf)); if (ret < 0) { perror("stdin: read"); @@ -1022,7 +1041,7 @@ int main(int argc, char **argv) try_output(1); } - if ((!connopen || back->socket(backhandle) == NULL) && + if ((!connopen || !back->connected(backhandle)) && bufchain_size(&stdout_data) == 0 && bufchain_size(&stderr_data) == 0) break; /* we closed the connection */