X-Git-Url: https://git.distorted.org.uk/~mdw/sgt/putty/blobdiff_plain/3ea863a3e893904b45674642afb3146bec8ce7e4..c7edb1cca5c2b3f3642034104dcf49656cd8678e:/unix/uxplink.c diff --git a/unix/uxplink.c b/unix/uxplink.c index eda68d29..451d1121 100644 --- a/unix/uxplink.c +++ b/unix/uxplink.c @@ -77,7 +77,7 @@ static Config cfg; /* * Default settings that are specific to pterm. */ -char *platform_default_s(char *name) +char *platform_default_s(const char *name) { if (!strcmp(name, "X11Display")) return getenv("DISPLAY"); @@ -125,7 +125,7 @@ char *platform_default_s(char *name) return NULL; } -int platform_default_i(char *name, int def) +int platform_default_i(const char *name, int def) { if (!strcmp(name, "TermWidth") || !strcmp(name, "TermHeight")) { @@ -136,7 +136,24 @@ int platform_default_i(char *name, int def) return def; } -char *x_get_default(char *key) +FontSpec platform_default_fontspec(const char *name) +{ + FontSpec ret; + *ret.name = '\0'; + return ret; +} + +Filename platform_default_filename(const char *name) +{ + Filename ret; + if (!strcmp(name, "LogFileName")) + strcpy(ret.path, "putty.log"); + else + *ret.path = '\0'; + return ret; +} + +char *x_get_default(const char *key) { return NULL; /* this is a stub */ } @@ -191,7 +208,8 @@ void try_output(int is_stderr) } } -int from_backend(void *frontend_handle, int is_stderr, char *data, int len) +int from_backend(void *frontend_handle, int is_stderr, + const char *data, int len) { int osize, esize; @@ -219,6 +237,13 @@ void sigwinch(int signum) } /* + * In Plink our selects are synchronous, so these functions are + * empty stubs. + */ +int uxsel_input_add(int fd, int rwx) { return 0; } +void uxsel_input_remove(int id) { } + +/* * Short description of parameters. */ static void usage(void) @@ -255,9 +280,9 @@ int main(int argc, char **argv) { int sending; int portnumber = -1; - int *sklist; - int socket; - int i, skcount, sksize, socketstate; + int *fdlist; + int fd; + int i, fdcount, fdsize, fdstate; int connopen; int exitcode; int errors; @@ -265,8 +290,8 @@ int main(int argc, char **argv) ssh_get_line = console_get_line; - sklist = NULL; - skcount = sksize = 0; + fdlist = NULL; + fdcount = fdsize = 0; /* * Initialise port and protocol to sensible defaults. (These * will be overridden by more or less anything.) @@ -428,13 +453,13 @@ int main(int argc, char **argv) while (*p) { if (cmdlen >= cmdsize) { cmdsize = cmdlen + 512; - command = srealloc(command, cmdsize); + command = sresize(command, cmdsize, char); } command[cmdlen++]=*p++; } if (cmdlen >= cmdsize) { cmdsize = cmdlen + 512; - command = srealloc(command, cmdsize); + command = sresize(command, cmdsize, char); } command[cmdlen++]=' '; /* always add trailing space */ if (--argc) p = *++argv; @@ -541,6 +566,7 @@ int main(int argc, char **argv) putty_signal(SIGWINCH, sigwinch); sk_init(); + uxsel_init(); /* * Start up the connection. @@ -605,31 +631,31 @@ int main(int argc, char **argv) FD_SET_MAX(2, maxfd, wset); } - /* Count the currently active sockets. */ + /* Count the currently active fds. */ i = 0; - for (socket = first_socket(&socketstate, &rwx); socket >= 0; - socket = next_socket(&socketstate, &rwx)) i++; + for (fd = first_fd(&fdstate, &rwx); fd >= 0; + fd = next_fd(&fdstate, &rwx)) i++; - /* Expand the sklist buffer if necessary. */ - if (i > sksize) { - sksize = i + 16; - sklist = srealloc(sklist, sksize * sizeof(*sklist)); + /* Expand the fdlist buffer if necessary. */ + if (i > fdsize) { + fdsize = i + 16; + fdlist = sresize(fdlist, fdsize, int); } /* - * Add all currently open sockets to the select sets, and - * store them in sklist as well. + * Add all currently open fds to the select sets, and store + * them in fdlist as well. */ - skcount = 0; - for (socket = first_socket(&socketstate, &rwx); socket >= 0; - socket = next_socket(&socketstate, &rwx)) { - sklist[skcount++] = socket; + fdcount = 0; + for (fd = first_fd(&fdstate, &rwx); fd >= 0; + fd = next_fd(&fdstate, &rwx)) { + fdlist[fdcount++] = fd; if (rwx & 1) - FD_SET_MAX(socket, maxfd, rset); + FD_SET_MAX(fd, maxfd, rset); if (rwx & 2) - FD_SET_MAX(socket, maxfd, wset); + FD_SET_MAX(fd, maxfd, wset); if (rwx & 4) - FD_SET_MAX(socket, maxfd, xset); + FD_SET_MAX(fd, maxfd, xset); } do { @@ -641,19 +667,19 @@ int main(int argc, char **argv) exit(1); } - for (i = 0; i < skcount; i++) { - socket = sklist[i]; + for (i = 0; i < fdcount; i++) { + fd = fdlist[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(fd, &xset)) + select_result(fd, 4); + if (FD_ISSET(fd, &rset)) + select_result(fd, 1); + if (FD_ISSET(fd, &wset)) + select_result(fd, 2); } if (FD_ISSET(signalpipe[0], &rset)) {