diff options
| author | Eli Zaretskii | 2002-05-05 18:44:05 +0000 |
|---|---|---|
| committer | Eli Zaretskii | 2002-05-05 18:44:05 +0000 |
| commit | 9975de28cd5ca6aff9e684acc873851de353191e (patch) | |
| tree | 34eabdf3a42337b5c4ad074f1d4ad902c934bef5 | |
| parent | 6b529d78beca9f45326d9ec3433299713090ee26 (diff) | |
| download | emacs-9975de28cd5ca6aff9e684acc873851de353191e.tar.gz emacs-9975de28cd5ca6aff9e684acc873851de353191e.zip | |
This file was deleted since the TCP emulation is no longer in use
on any platform.
| -rw-r--r-- | lib-src/tcp.c | 242 | ||||
| -rw-r--r-- | lisp/tcp.el | 75 |
2 files changed, 0 insertions, 317 deletions
diff --git a/lib-src/tcp.c b/lib-src/tcp.c deleted file mode 100644 index 402528dd690..00000000000 --- a/lib-src/tcp.c +++ /dev/null | |||
| @@ -1,242 +0,0 @@ | |||
| 1 | /* | ||
| 2 | * TCP/IP stream emulation for GNU Emacs. | ||
| 3 | * Copyright (C) 1988, 1989, 1992, 1993 Free Software Foundation, Inc. | ||
| 4 | |||
| 5 | * Author: Masanobu Umeda | ||
| 6 | * Maintainer: umerin@mse.kyutech.ac.jp | ||
| 7 | |||
| 8 | This file is part of GNU Emacs. | ||
| 9 | |||
| 10 | GNU Emacs is free software; you can redistribute it and/or modify | ||
| 11 | it under the terms of the GNU General Public License as published by | ||
| 12 | the Free Software Foundation; either version 2, or (at your option) | ||
| 13 | any later version. | ||
| 14 | |||
| 15 | GNU Emacs is distributed in the hope that it will be useful, | ||
| 16 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 17 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 18 | GNU General Public License for more details. | ||
| 19 | |||
| 20 | You should have received a copy of the GNU General Public License | ||
| 21 | along with GNU Emacs; see the file COPYING. If not, write to | ||
| 22 | the Free Software Foundation, Inc., 59 Temple Place - Suite 330, | ||
| 23 | Boston, MA 02111-1307, USA. | ||
| 24 | |||
| 25 | * | ||
| 26 | * Yasunari, Itoh at PFU limited contributed for Fujitsu UTS and SX/A. | ||
| 27 | * | ||
| 28 | * Thu Apr 6 13:47:37 JST 1989 | ||
| 29 | * USG fixes by Sakaeda <saka@mickey.trad.pf.fujitsu.junet> | ||
| 30 | * | ||
| 31 | * For Fujitsu UTS compile with: | ||
| 32 | * cc -O -o tcp tcp.c -DFUJITSU_UTS -lu -lsocket | ||
| 33 | */ | ||
| 34 | |||
| 35 | #include <stdio.h> | ||
| 36 | #include <fcntl.h> | ||
| 37 | #include <ctype.h> | ||
| 38 | #include <sys/types.h> | ||
| 39 | |||
| 40 | #ifdef FUJITSU_UTS | ||
| 41 | #define USG | ||
| 42 | #include <sys/ucbtypes.h> | ||
| 43 | #include <sys/tisp/socket.h> | ||
| 44 | #include <netdb.h> | ||
| 45 | #include <sys/tisp/in.h> | ||
| 46 | #else | ||
| 47 | #include <sys/socket.h> | ||
| 48 | #include <netdb.h> | ||
| 49 | #include <netinet/in.h> | ||
| 50 | #endif | ||
| 51 | |||
| 52 | #ifdef USG | ||
| 53 | #include <sys/stat.h> | ||
| 54 | #include <signal.h> | ||
| 55 | #endif | ||
| 56 | |||
| 57 | #ifdef FUJITSU_UTS | ||
| 58 | #define bcopy(f, t, n) memcpy (t, f, n) | ||
| 59 | #define bcmp(b1, b2, n) (memcmp (b1, b2, n)!=0) | ||
| 60 | #define bzero(b, n) memset (b, 0, n) | ||
| 61 | #endif | ||
| 62 | |||
| 63 | #ifdef USG | ||
| 64 | int selectable = 1; | ||
| 65 | |||
| 66 | sigout () | ||
| 67 | { | ||
| 68 | fcntl (fileno (stdin), F_SETFL, 0); | ||
| 69 | exit (-1); | ||
| 70 | } | ||
| 71 | #endif | ||
| 72 | |||
| 73 | main (argc, argv) | ||
| 74 | int argc; | ||
| 75 | char *argv[]; | ||
| 76 | { | ||
| 77 | struct hostent *host; | ||
| 78 | struct sockaddr_in sockin, sockme; | ||
| 79 | struct servent *serv; | ||
| 80 | char *hostname = NULL; | ||
| 81 | char *service = "nntp"; | ||
| 82 | int port; | ||
| 83 | int readfds; | ||
| 84 | int writefds; | ||
| 85 | int server; /* NNTP Server */ | ||
| 86 | int emacsIn = fileno (stdin); /* Emacs intput */ | ||
| 87 | int emacsOut = fileno (stdout); /* Emacs output */ | ||
| 88 | char buffer[1024]; | ||
| 89 | int nbuffer; /* Number of bytes in buffer */ | ||
| 90 | int wret; | ||
| 91 | char *retry; /* retry bufferp */ | ||
| 92 | int false = 0; /* FALSE flag for setsockopt () */ | ||
| 93 | |||
| 94 | if (argc < 2) | ||
| 95 | { | ||
| 96 | fprintf (stderr, "Usage: %s HOST [SERVICE]\n", argv[0]); | ||
| 97 | exit (1); | ||
| 98 | } | ||
| 99 | if (argc >= 2) | ||
| 100 | hostname = argv[1]; | ||
| 101 | if (argc >= 3) | ||
| 102 | service = argv[2]; | ||
| 103 | |||
| 104 | if ((host = gethostbyname (hostname)) == NULL) | ||
| 105 | { | ||
| 106 | perror ("gethostbyname"); | ||
| 107 | exit (1); | ||
| 108 | } | ||
| 109 | if (isdigit (service[0])) | ||
| 110 | port = atoi (service); | ||
| 111 | else | ||
| 112 | { | ||
| 113 | serv = getservbyname (service, "tcp"); | ||
| 114 | if (serv == NULL) | ||
| 115 | { | ||
| 116 | perror ("getservbyname"); | ||
| 117 | exit (1); | ||
| 118 | } | ||
| 119 | port = serv->s_port; | ||
| 120 | } | ||
| 121 | |||
| 122 | bzero (&sockin, sizeof (sockin)); | ||
| 123 | sockin.sin_family = host->h_addrtype; | ||
| 124 | bcopy (host->h_addr, &sockin.sin_addr, host->h_length); | ||
| 125 | sockin.sin_port = htons (port); | ||
| 126 | if ((server = socket (AF_INET, SOCK_STREAM, 0)) < 0) | ||
| 127 | { | ||
| 128 | perror ("socket"); | ||
| 129 | exit (1); | ||
| 130 | } | ||
| 131 | if (setsockopt (server, SOL_SOCKET, SO_REUSEADDR, &false, sizeof (false))) | ||
| 132 | { | ||
| 133 | perror ("setsockopt"); | ||
| 134 | exit (1); | ||
| 135 | } | ||
| 136 | bzero (&sockme, sizeof (sockme)); | ||
| 137 | sockme.sin_family = sockin.sin_family; | ||
| 138 | sockme.sin_addr.s_addr = INADDR_ANY; | ||
| 139 | if (bind (server, &sockme, sizeof (sockme)) < 0) | ||
| 140 | { | ||
| 141 | perror ("bind"); | ||
| 142 | exit (1); | ||
| 143 | } | ||
| 144 | if (connect (server, &sockin, sizeof (sockin)) < 0) | ||
| 145 | { | ||
| 146 | perror ("connect"); | ||
| 147 | close (server); | ||
| 148 | exit (1); | ||
| 149 | } | ||
| 150 | |||
| 151 | #ifdef O_NDELAY | ||
| 152 | fcntl (server, F_SETFL, O_NDELAY); | ||
| 153 | |||
| 154 | #ifdef USG | ||
| 155 | /* USG pipe cannot not select emacsIn */ | ||
| 156 | { | ||
| 157 | struct stat statbuf; | ||
| 158 | fstat (emacsIn, &statbuf); | ||
| 159 | if (statbuf.st_mode & 010000) | ||
| 160 | selectable = 0; | ||
| 161 | if (!selectable) | ||
| 162 | { | ||
| 163 | signal (SIGINT, sigout); | ||
| 164 | fcntl (emacsIn, F_SETFL, O_NDELAY); | ||
| 165 | } | ||
| 166 | } | ||
| 167 | #endif | ||
| 168 | #endif | ||
| 169 | |||
| 170 | /* Connection established. */ | ||
| 171 | while (1) | ||
| 172 | { | ||
| 173 | readfds = (1 << server) | (1 << emacsIn); | ||
| 174 | if (select (32, &readfds, NULL, NULL, (struct timeval *)NULL) == -1) | ||
| 175 | { | ||
| 176 | perror ("select"); | ||
| 177 | exit (1); | ||
| 178 | } | ||
| 179 | if (readfds & (1 << emacsIn)) | ||
| 180 | { | ||
| 181 | /* From Emacs */ | ||
| 182 | nbuffer = read (emacsIn, buffer, sizeof buffer -1); | ||
| 183 | |||
| 184 | #ifdef USG | ||
| 185 | if (selectable && nbuffer == 0) | ||
| 186 | { | ||
| 187 | goto finish; | ||
| 188 | } | ||
| 189 | else if (!(readfds & (1 << server)) && nbuffer == 0) | ||
| 190 | { | ||
| 191 | sleep (1); | ||
| 192 | } | ||
| 193 | else | ||
| 194 | #else | ||
| 195 | if (nbuffer == 0) | ||
| 196 | goto finish; | ||
| 197 | #endif | ||
| 198 | for (retry = buffer; nbuffer > 0; nbuffer -= wret, retry += wret) | ||
| 199 | { | ||
| 200 | writefds = 1 << server; | ||
| 201 | if (select (server+1, NULL, &writefds, NULL, (struct timeval*)NULL) == -1) | ||
| 202 | { | ||
| 203 | perror ("select"); | ||
| 204 | exit (1); | ||
| 205 | } | ||
| 206 | wret = write (server, retry, nbuffer); | ||
| 207 | if (wret < 0) goto finish; | ||
| 208 | } | ||
| 209 | } | ||
| 210 | if (readfds & (1 << server)) | ||
| 211 | { | ||
| 212 | /* From NNTP server */ | ||
| 213 | nbuffer = read (server, buffer, sizeof buffer -1); | ||
| 214 | if (nbuffer == 0) | ||
| 215 | goto finish; | ||
| 216 | for (retry = buffer; nbuffer > 0; nbuffer -= wret, retry += wret) | ||
| 217 | { | ||
| 218 | writefds = 1 << emacsOut; | ||
| 219 | #ifdef USG | ||
| 220 | if (selectable) | ||
| 221 | #endif | ||
| 222 | if (select (emacsOut+1, NULL, &writefds, NULL, (struct timeval*)NULL) == -1) | ||
| 223 | { | ||
| 224 | perror ("select"); | ||
| 225 | exit (1); | ||
| 226 | } | ||
| 227 | wret = write (emacsOut, retry, nbuffer); | ||
| 228 | if (wret < 0) goto finish; | ||
| 229 | } | ||
| 230 | } | ||
| 231 | } | ||
| 232 | |||
| 233 | /* End of communication. */ | ||
| 234 | finish: | ||
| 235 | close (server); | ||
| 236 | #ifdef USG | ||
| 237 | if (!selectable) fcntl (emacsIn, F_SETFL, 0); | ||
| 238 | #endif | ||
| 239 | close (emacsIn); | ||
| 240 | close (emacsOut); | ||
| 241 | exit (0); | ||
| 242 | } | ||
diff --git a/lisp/tcp.el b/lisp/tcp.el deleted file mode 100644 index 2f5b756ab82..00000000000 --- a/lisp/tcp.el +++ /dev/null | |||
| @@ -1,75 +0,0 @@ | |||
| 1 | ;;; tcp.el --- TCP/IP stream emulation for GNU Emacs | ||
| 2 | |||
| 3 | ;; Copyright (C) 1988, 1989, 1993 Free Software Foundation, Inc. | ||
| 4 | |||
| 5 | ;; Author: Masanobu Umeda | ||
| 6 | ;; Maintainer: umerin@mse.kyutech.ac.jp | ||
| 7 | |||
| 8 | ;; This file is part of GNU Emacs. | ||
| 9 | |||
| 10 | ;; GNU Emacs is free software; you can redistribute it and/or modify | ||
| 11 | ;; it under the terms of the GNU General Public License as published by | ||
| 12 | ;; the Free Software Foundation; either version 2, or (at your option) | ||
| 13 | ;; any later version. | ||
| 14 | |||
| 15 | ;; GNU Emacs is distributed in the hope that it will be useful, | ||
| 16 | ;; but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 17 | ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 18 | ;; GNU General Public License for more details. | ||
| 19 | |||
| 20 | ;; You should have received a copy of the GNU General Public License | ||
| 21 | ;; along with GNU Emacs; see the file COPYING. If not, write to the | ||
| 22 | ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, | ||
| 23 | ;; Boston, MA 02111-1307, USA. | ||
| 24 | |||
| 25 | ;;; Commentary: | ||
| 26 | |||
| 27 | ;; Notes on TCP package: | ||
| 28 | ;; | ||
| 29 | ;; This package provides a TCP/IP stream emulation for GNU Emacs. If | ||
| 30 | ;; the function `open-network-stream' is not defined in Emacs, but | ||
| 31 | ;; your operating system has a capability of network stream | ||
| 32 | ;; connection, this tcp package can be used for communicating with | ||
| 33 | ;; NNTP server. | ||
| 34 | ;; | ||
| 35 | ;; The tcp package runs inferior process which actually does the role | ||
| 36 | ;; of `open-network-stream'. The program `tcp' provided with this | ||
| 37 | ;; package can be used for such purpose. Before loading the package, | ||
| 38 | ;; compile `tcp.c' and install it as `tcp' in a directory in the emacs | ||
| 39 | ;; search path. If you modify `tcp.c', please send diffs to the author | ||
| 40 | ;; of GNUS. I'll include some of them in the next releases. | ||
| 41 | |||
| 42 | ;;; Code: | ||
| 43 | |||
| 44 | (provide 'tcp) | ||
| 45 | |||
| 46 | (defvar tcp-program-name "tcp" | ||
| 47 | "*The name of the program emulating open-network-stream function.") | ||
| 48 | |||
| 49 | (defun open-network-stream (name buffer host service) | ||
| 50 | "Open a TCP connection for a service to a host. | ||
| 51 | Returns a subprocess-object to represent the connection. | ||
| 52 | Input and output work as for subprocesses; `delete-process' closes it. | ||
| 53 | Args are NAME BUFFER HOST SERVICE. | ||
| 54 | NAME is name for process. It is modified if necessary to make it unique. | ||
| 55 | BUFFER is the buffer (or buffer-name) to associate with the process. | ||
| 56 | Process output goes at end of that buffer, unless you specify | ||
| 57 | an output stream or filter function to handle the output. | ||
| 58 | BUFFER may be also nil, meaning that this process is not associated | ||
| 59 | with any buffer | ||
| 60 | Third arg is name of the host to connect to. | ||
| 61 | Fourth arg SERVICE is name of the service desired, or an integer | ||
| 62 | specifying a port number to connect to." | ||
| 63 | (let ((proc (start-process name buffer | ||
| 64 | tcp-program-name | ||
| 65 | host | ||
| 66 | (if (stringp service) | ||
| 67 | service | ||
| 68 | (int-to-string service)) | ||
| 69 | ))) | ||
| 70 | (process-kill-without-query proc) | ||
| 71 | ;; Return process | ||
| 72 | proc | ||
| 73 | )) | ||
| 74 | |||
| 75 | ;;; tcp.el ends here | ||