OSDN Git Service

Delete unused source files for 1.98d.
[ffftp/ffftp.git] / putty / UNIX / UXPROXY.C
diff --git a/putty/UNIX/UXPROXY.C b/putty/UNIX/UXPROXY.C
deleted file mode 100644 (file)
index 147df6e..0000000
+++ /dev/null
@@ -1,311 +0,0 @@
-/*\r
- * uxproxy.c: Unix implementation of platform_new_connection(),\r
- * supporting an OpenSSH-like proxy command.\r
- */\r
-\r
-#include <stdio.h>\r
-#include <assert.h>\r
-#include <errno.h>\r
-#include <unistd.h>\r
-#include <fcntl.h>\r
-\r
-#define DEFINE_PLUG_METHOD_MACROS\r
-#include "tree234.h"\r
-#include "putty.h"\r
-#include "network.h"\r
-#include "proxy.h"\r
-\r
-typedef struct Socket_localproxy_tag * Local_Proxy_Socket;\r
-\r
-struct Socket_localproxy_tag {\r
-    const struct socket_function_table *fn;\r
-    /* the above variable absolutely *must* be the first in this structure */\r
-\r
-    int to_cmd, from_cmd;             /* fds */\r
-\r
-    char *error;\r
-\r
-    Plug plug;\r
-\r
-    bufchain pending_output_data;\r
-    bufchain pending_input_data;\r
-\r
-    void *privptr;\r
-};\r
-\r
-static int localproxy_select_result(int fd, int event);\r
-\r
-/*\r
- * Trees to look up the pipe fds in.\r
- */\r
-static tree234 *localproxy_by_fromfd, *localproxy_by_tofd;\r
-static int localproxy_fromfd_cmp(void *av, void *bv)\r
-{\r
-    Local_Proxy_Socket a = (Local_Proxy_Socket)av;\r
-    Local_Proxy_Socket b = (Local_Proxy_Socket)bv;\r
-    if (a->from_cmd < b->from_cmd)\r
-       return -1;\r
-    if (a->from_cmd > b->from_cmd)\r
-       return +1;\r
-    return 0;\r
-}\r
-static int localproxy_fromfd_find(void *av, void *bv)\r
-{\r
-    int a = *(int *)av;\r
-    Local_Proxy_Socket b = (Local_Proxy_Socket)bv;\r
-    if (a < b->from_cmd)\r
-       return -1;\r
-    if (a > b->from_cmd)\r
-       return +1;\r
-    return 0;\r
-}\r
-static int localproxy_tofd_cmp(void *av, void *bv)\r
-{\r
-    Local_Proxy_Socket a = (Local_Proxy_Socket)av;\r
-    Local_Proxy_Socket b = (Local_Proxy_Socket)bv;\r
-    if (a->to_cmd < b->to_cmd)\r
-       return -1;\r
-    if (a->to_cmd > b->to_cmd)\r
-       return +1;\r
-    return 0;\r
-}\r
-static int localproxy_tofd_find(void *av, void *bv)\r
-{\r
-    int a = *(int *)av;\r
-    Local_Proxy_Socket b = (Local_Proxy_Socket)bv;\r
-    if (a < b->to_cmd)\r
-       return -1;\r
-    if (a > b->to_cmd)\r
-       return +1;\r
-    return 0;\r
-}\r
-\r
-/* basic proxy socket functions */\r
-\r
-static Plug sk_localproxy_plug (Socket s, Plug p)\r
-{\r
-    Local_Proxy_Socket ps = (Local_Proxy_Socket) s;\r
-    Plug ret = ps->plug;\r
-    if (p)\r
-       ps->plug = p;\r
-    return ret;\r
-}\r
-\r
-static void sk_localproxy_close (Socket s)\r
-{\r
-    Local_Proxy_Socket ps = (Local_Proxy_Socket) s;\r
-\r
-    del234(localproxy_by_fromfd, ps);\r
-    del234(localproxy_by_tofd, ps);\r
-\r
-    uxsel_del(ps->to_cmd);\r
-    uxsel_del(ps->from_cmd);\r
-    close(ps->to_cmd);\r
-    close(ps->from_cmd);\r
-\r
-    sfree(ps);\r
-}\r
-\r
-static int localproxy_try_send(Local_Proxy_Socket ps)\r
-{\r
-    int sent = 0;\r
-\r
-    while (bufchain_size(&ps->pending_output_data) > 0) {\r
-       void *data;\r
-       int len, ret;\r
-\r
-       bufchain_prefix(&ps->pending_output_data, &data, &len);\r
-       ret = write(ps->to_cmd, data, len);\r
-       if (ret < 0 && errno != EWOULDBLOCK) {\r
-           /* We're inside the Unix frontend here, so we know\r
-            * that the frontend handle is unnecessary. */\r
-           logevent(NULL, strerror(errno));\r
-           fatalbox("%s", strerror(errno));\r
-       } else if (ret <= 0) {\r
-           break;\r
-       } else {\r
-           bufchain_consume(&ps->pending_output_data, ret);\r
-           sent += ret;\r
-       }\r
-    }\r
-\r
-    if (bufchain_size(&ps->pending_output_data) == 0)\r
-       uxsel_del(ps->to_cmd);\r
-    else\r
-       uxsel_set(ps->to_cmd, 2, localproxy_select_result);\r
-\r
-    return sent;\r
-}\r
-\r
-static int sk_localproxy_write (Socket s, const char *data, int len)\r
-{\r
-    Local_Proxy_Socket ps = (Local_Proxy_Socket) s;\r
-\r
-    bufchain_add(&ps->pending_output_data, data, len);\r
-\r
-    localproxy_try_send(ps);\r
-\r
-    return bufchain_size(&ps->pending_output_data);\r
-}\r
-\r
-static int sk_localproxy_write_oob (Socket s, const char *data, int len)\r
-{\r
-    /*\r
-     * oob data is treated as inband; nasty, but nothing really\r
-     * better we can do\r
-     */\r
-    return sk_localproxy_write(s, data, len);\r
-}\r
-\r
-static void sk_localproxy_flush (Socket s)\r
-{\r
-    /* Local_Proxy_Socket ps = (Local_Proxy_Socket) s; */\r
-    /* do nothing */\r
-}\r
-\r
-static void sk_localproxy_set_private_ptr (Socket s, void *ptr)\r
-{\r
-    Local_Proxy_Socket ps = (Local_Proxy_Socket) s;\r
-    ps->privptr = ptr;\r
-}\r
-\r
-static void * sk_localproxy_get_private_ptr (Socket s)\r
-{\r
-    Local_Proxy_Socket ps = (Local_Proxy_Socket) s;\r
-    return ps->privptr;\r
-}\r
-\r
-static void sk_localproxy_set_frozen (Socket s, int is_frozen)\r
-{\r
-    Local_Proxy_Socket ps = (Local_Proxy_Socket) s;\r
-\r
-    if (is_frozen)\r
-       uxsel_del(ps->from_cmd);\r
-    else\r
-       uxsel_set(ps->from_cmd, 1, localproxy_select_result);\r
-}\r
-\r
-static const char * sk_localproxy_socket_error (Socket s)\r
-{\r
-    Local_Proxy_Socket ps = (Local_Proxy_Socket) s;\r
-    return ps->error;\r
-}\r
-\r
-static int localproxy_select_result(int fd, int event)\r
-{\r
-    Local_Proxy_Socket s;\r
-    char buf[20480];\r
-    int ret;\r
-\r
-    if (!(s = find234(localproxy_by_fromfd, &fd, localproxy_fromfd_find)) &&\r
-       !(s = find234(localproxy_by_tofd, &fd, localproxy_tofd_find)) )\r
-       return 1;                      /* boggle */\r
-\r
-    if (event == 1) {\r
-       assert(fd == s->from_cmd);\r
-       ret = read(fd, buf, sizeof(buf));\r
-       if (ret < 0) {\r
-           return plug_closing(s->plug, strerror(errno), errno, 0);\r
-       } else if (ret == 0) {\r
-           return plug_closing(s->plug, NULL, 0, 0);\r
-       } else {\r
-           return plug_receive(s->plug, 0, buf, ret);\r
-       }\r
-    } else if (event == 2) {\r
-       assert(fd == s->to_cmd);\r
-       if (localproxy_try_send(s))\r
-           plug_sent(s->plug, bufchain_size(&s->pending_output_data));\r
-       return 1;\r
-    }\r
-\r
-    return 1;\r
-}\r
-\r
-Socket platform_new_connection(SockAddr addr, char *hostname,\r
-                              int port, int privport,\r
-                              int oobinline, int nodelay, int keepalive,\r
-                              Plug plug, const Config *cfg)\r
-{\r
-    char *cmd;\r
-\r
-    static const struct socket_function_table socket_fn_table = {\r
-       sk_localproxy_plug,\r
-       sk_localproxy_close,\r
-       sk_localproxy_write,\r
-       sk_localproxy_write_oob,\r
-       sk_localproxy_flush,\r
-       sk_localproxy_set_private_ptr,\r
-       sk_localproxy_get_private_ptr,\r
-       sk_localproxy_set_frozen,\r
-       sk_localproxy_socket_error\r
-    };\r
-\r
-    Local_Proxy_Socket ret;\r
-    int to_cmd_pipe[2], from_cmd_pipe[2], pid;\r
-\r
-    if (cfg->proxy_type != PROXY_CMD)\r
-       return NULL;\r
-\r
-    cmd = format_telnet_command(addr, port, cfg);\r
-\r
-    ret = snew(struct Socket_localproxy_tag);\r
-    ret->fn = &socket_fn_table;\r
-    ret->plug = plug;\r
-    ret->error = NULL;\r
-\r
-    bufchain_init(&ret->pending_input_data);\r
-    bufchain_init(&ret->pending_output_data);\r
-\r
-    /*\r
-     * Create the pipes to the proxy command, and spawn the proxy\r
-     * command process.\r
-     */\r
-    if (pipe(to_cmd_pipe) < 0 ||\r
-       pipe(from_cmd_pipe) < 0) {\r
-       ret->error = dupprintf("pipe: %s", strerror(errno));\r
-       return (Socket)ret;\r
-    }\r
-    cloexec(to_cmd_pipe[1]);\r
-    cloexec(from_cmd_pipe[0]);\r
-\r
-    pid = fork();\r
-\r
-    if (pid < 0) {\r
-       ret->error = dupprintf("fork: %s", strerror(errno));\r
-       return (Socket)ret;\r
-    } else if (pid == 0) {\r
-       close(0);\r
-       close(1);\r
-       dup2(to_cmd_pipe[0], 0);\r
-       dup2(from_cmd_pipe[1], 1);\r
-       close(to_cmd_pipe[0]);\r
-       close(from_cmd_pipe[1]);\r
-       fcntl(0, F_SETFD, 0);\r
-       fcntl(1, F_SETFD, 0);\r
-       execl("/bin/sh", "sh", "-c", cmd, (void *)NULL);\r
-       _exit(255);\r
-    }\r
-\r
-    sfree(cmd);\r
-\r
-    close(to_cmd_pipe[0]);\r
-    close(from_cmd_pipe[1]);\r
-\r
-    ret->to_cmd = to_cmd_pipe[1];\r
-    ret->from_cmd = from_cmd_pipe[0];\r
-\r
-    if (!localproxy_by_fromfd)\r
-       localproxy_by_fromfd = newtree234(localproxy_fromfd_cmp);\r
-    if (!localproxy_by_tofd)\r
-       localproxy_by_tofd = newtree234(localproxy_tofd_cmp);\r
-\r
-    add234(localproxy_by_fromfd, ret);\r
-    add234(localproxy_by_tofd, ret);\r
-\r
-    uxsel_set(ret->from_cmd, 1, localproxy_select_result);\r
-\r
-    /* We are responsible for this and don't need it any more */\r
-    sk_addr_free(addr);\r
-\r
-    return (Socket) ret;\r
-}\r