QEMU uses fork_exec() with do_pty values 0 or 3. Let's clean up some unused code.
Signed-off-by: Marc-André Lureau <marcandre.lur...@redhat.com> --- slirp/misc.h | 2 +- slirp/misc.c | 55 ++++++++++++++---------------------------------- slirp/tcp_subr.c | 2 +- 3 files changed, 18 insertions(+), 41 deletions(-) diff --git a/slirp/misc.h b/slirp/misc.h index 5211bbd30a..897650aea1 100644 --- a/slirp/misc.h +++ b/slirp/misc.h @@ -53,6 +53,6 @@ struct slirp_quehead { void slirp_insque(void *, void *); void slirp_remque(void *); int add_exec(struct ex_list **, int, char *, struct in_addr, int); -int fork_exec(struct socket *so, const char *ex, int do_pty); +int fork_exec(struct socket *so, const char *ex); #endif diff --git a/slirp/misc.c b/slirp/misc.c index 260187b6b6..ec5d5ec073 100644 --- a/slirp/misc.c +++ b/slirp/misc.c @@ -63,7 +63,7 @@ int add_exec(struct ex_list **ex_ptr, int do_pty, char *exec, #ifdef _WIN32 int -fork_exec(struct socket *so, const char *ex, int do_pty) +fork_exec(struct socket *so, const char *ex) { /* not implemented */ return 0; @@ -77,13 +77,9 @@ fork_exec(struct socket *so, const char *ex, int do_pty) * process, which connects to this socket, after which we * exec the wanted program. If something (strange) happens, * the accept() call could block us forever. - * - * do_pty = 0 Fork/exec inetd style - * do_pty = 1 Fork/exec using slirp.telnetd - * do_ptr = 2 Fork/exec using pty */ int -fork_exec(struct socket *so, const char *ex, int do_pty) +fork_exec(struct socket *so, const char *ex) { int s; struct sockaddr_in addr; @@ -99,26 +95,20 @@ fork_exec(struct socket *so, const char *ex, int do_pty) DEBUG_CALL("fork_exec"); DEBUG_ARG("so = %p", so); DEBUG_ARG("ex = %p", ex); - DEBUG_ARG("do_pty = %x", do_pty); - - if (do_pty == 2) { - return 0; - } else { - addr.sin_family = AF_INET; - addr.sin_port = 0; - addr.sin_addr.s_addr = INADDR_ANY; - if ((s = qemu_socket(AF_INET, SOCK_STREAM, 0)) < 0 || - bind(s, (struct sockaddr *)&addr, addrlen) < 0 || - listen(s, 1) < 0) { - error_report("Error: inet socket: %s", strerror(errno)); - if (s >= 0) { - closesocket(s); - } + addr.sin_family = AF_INET; + addr.sin_port = 0; + addr.sin_addr.s_addr = INADDR_ANY; - return 0; - } - } + s = qemu_socket(AF_INET, SOCK_STREAM, 0); + if (s < 0 || bind(s, (struct sockaddr *)&addr, addrlen) < 0 || + listen(s, 1) < 0) { + error_report("Error: inet socket: %s", strerror(errno)); + if (s >= 0) { + closesocket(s); + } + return 0; + } pid = fork(); switch(pid) { @@ -151,13 +141,7 @@ fork_exec(struct socket *so, const char *ex, int do_pty) i = 0; bptr = g_strdup(ex); /* No need to free() this */ - if (do_pty == 1) { - /* Setup "slirp.telnetd -x" */ - argv[i++] = "slirp.telnetd"; - argv[i++] = "-x"; - argv[i++] = bptr; - } else - do { + do { /* Change the string into argv[] */ curarg = bptr; while (*bptr != ' ' && *bptr != (char)0) @@ -165,7 +149,7 @@ fork_exec(struct socket *so, const char *ex, int do_pty) c = *bptr; *bptr++ = (char)0; argv[i++] = g_strdup(curarg); - } while (c); + } while (c); argv[i] = NULL; execvp(argv[0], (char **)argv); @@ -193,13 +177,6 @@ fork_exec(struct socket *so, const char *ex, int do_pty) opt = 1; qemu_setsockopt(so->s, SOL_SOCKET, SO_OOBINLINE, &opt, sizeof(int)); qemu_set_nonblock(so->s); - - /* Append the telnet options now */ - if (so->so_m != NULL && do_pty == 1) { - sbappend(so, so->so_m); - so->so_m = NULL; - } - return 1; } } diff --git a/slirp/tcp_subr.c b/slirp/tcp_subr.c index 8d0f94b75f..a82efe78d7 100644 --- a/slirp/tcp_subr.c +++ b/slirp/tcp_subr.c @@ -973,7 +973,7 @@ int tcp_ctl(struct socket *so) } do_pty = ex_ptr->ex_pty; DEBUG_MISC((dfd, " executing %s\n", ex_ptr->ex_exec)); - return fork_exec(so, ex_ptr->ex_exec, do_pty); + return fork_exec(so, ex_ptr->ex_exec); } } } -- 2.19.1.708.g4ede3d42df