projects
/
u
/
mdw
/
putty
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Remove has_focus from Session and use the one in Terminal. Active vs passive
[u/mdw/putty]
/
unix
/
uxplink.c
diff --git
a/unix/uxplink.c
b/unix/uxplink.c
index
453a9f4
..
179f254
100644
(file)
--- a/
unix/uxplink.c
+++ b/
unix/uxplink.c
@@
-111,6
+111,9
@@
void try_output(int is_stderr)
void *senddata;
int sendlen, ret;
void *senddata;
int sendlen, ret;
+ if (bufchain_size(chain) == 0)
+ return;
+
bufchain_prefix(chain, &senddata, &sendlen);
ret = write(fd, senddata, sendlen);
if (ret > 0)
bufchain_prefix(chain, &senddata, &sendlen);
ret = write(fd, senddata, sendlen);
if (ret > 0)
@@
-183,7
+186,6
@@
int main(int argc, char **argv)
int i, skcount, sksize, socketstate;
int connopen;
int exitcode;
int i, skcount, sksize, socketstate;
int connopen;
int exitcode;
- void *logctx;
void *ldisc;
ssh_get_line = console_get_line;
void *ldisc;
ssh_get_line = console_get_line;
@@
-234,10
+236,19
@@
int main(int argc, char **argv)
continue;
} else if (!strcmp(p, "-batch")) {
console_batch_mode = 1;
continue;
} else if (!strcmp(p, "-batch")) {
console_batch_mode = 1;
+ } else if (!strcmp(p, "-o")) {
+ if (argc <= 1)
+ fprintf(stderr,
+ "plink: option \"-o\" requires an argument\n");
+ else
+ --argc, provide_xrm_string(*++argv);
}
} else if (*p) {
if (!*cfg.host) {
char *q = p;
}
} else if (*p) {
if (!*cfg.host) {
char *q = p;
+
+ do_defaults(NULL, &cfg);
+
/*
* If the hostname starts with "telnet:", set the
* protocol to Telnet and process the string as a
/*
* If the hostname starts with "telnet:", set the
* protocol to Telnet and process the string as a
@@
-438,6
+449,7
@@
int main(int argc, char **argv)
/*
* Start up the connection.
*/
/*
* Start up the connection.
*/
+ logctx = log_init(NULL);
{
char *error;
char *realhost;
{
char *error;
char *realhost;
@@
-450,7
+462,6
@@
int main(int argc, char **argv)
fprintf(stderr, "Unable to open connection:\n%s\n", error);
return 1;
}
fprintf(stderr, "Unable to open connection:\n%s\n", error);
return 1;
}
- logctx = log_init(NULL);
back->provide_logctx(backhandle, logctx);
ldisc = ldisc_create(NULL, back, backhandle, NULL);
sfree(realhost);
back->provide_logctx(backhandle, logctx);
ldisc = ldisc_create(NULL, back, backhandle, NULL);
sfree(realhost);
@@
-532,12
+543,17
@@
int main(int argc, char **argv)
for (i = 0; i < skcount; i++) {
socket = sklist[i];
for (i = 0; i < skcount; i++) {
socket = sklist[i];
+ /*
+ * We must process exceptional notifications before
+ * ordinary readability ones, or we may go straight
+ * past the urgent marker.
+ */
+ if (FD_ISSET(socket, &xset))
+ select_result(socket, 4);
if (FD_ISSET(socket, &rset))
select_result(socket, 1);
if (FD_ISSET(socket, &wset))
select_result(socket, 2);
if (FD_ISSET(socket, &rset))
select_result(socket, 1);
if (FD_ISSET(socket, &wset))
select_result(socket, 2);
- if (FD_ISSET(socket, &xset))
- select_result(socket, 4);
}
if (FD_ISSET(0, &rset)) {
}
if (FD_ISSET(0, &rset)) {
@@
-576,5
+592,6
@@
int main(int argc, char **argv)
fprintf(stderr, "Remote process exit code unavailable\n");
exitcode = 1; /* this is an error condition */
}
fprintf(stderr, "Remote process exit code unavailable\n");
exitcode = 1; /* this is an error condition */
}
- return exitcode;
+ cleanup_exit(exitcode);
+ return exitcode; /* shouldn't happen, but placates gcc */
}
}