File: [local] / OpenXM / src / gnuplot / Attic / plot.c.diff (download)
Revision 1.3, Mon Mar 20 18:54:24 2000 UTC (24 years, 6 months ago) by ohara
Branch: MAIN
CVS Tags: maekawa-ipv6, RELEASE_1_2_2_KNOPPIX_b, RELEASE_1_2_2_KNOPPIX, RELEASE_1_2_2, RELEASE_1_2_1, RELEASE_1_1_3 Changes since 1.2: +372 -359
lines
TcpioError has been renamed stderr and
the style of plot.c.diff has changed to a context diff.
|
$OpenXM: OpenXM/src/gnuplot/plot.c.diff,v 1.3 2000/03/20 18:54:24 ohara Exp $
*** plot.c.orig Sat Jan 22 23:15:59 2000
--- plot.c Tue Mar 21 03:41:44 2000
***************
*** 42,47 ****
--- 42,64 ----
#include "fnproto.h"
#include <setjmp.h>
+ /* TAKAYAMA Nobuki */
+ #include <sys/types.h>
+ #include <sys/socket.h>
+ #include <sys/time.h>
+ #include <netinet/in.h>
+ #include <netdb.h>
+
+ FILE *openTCP __P((char *));
+
+ int socketConnect __P((char *, int));
+ int socketOpen __P((char *, int));
+ int socketAccept __P((int));
+
+ int oxSocketSelect0 __P((int, int));
+ int oxSocketMultiSelect __P((int *, int, int, int *));
+ /* END */
+
#if defined(MSDOS) || defined(DOS386) || defined(__EMX__)
# include <io.h>
#endif
***************
*** 321,326 ****
--- 338,344 ----
int argc;
char **argv;
{
+ FILE *fp;
#ifdef LINUXVGA
LINUX_setup();
#endif
***************
*** 527,534 ****
/* interactive = FALSE; */ /* should this be here? */
! } else
! load_file(fopen(*argv, "r"), *argv, FALSE);
}
#ifdef _Windows
if (noend) {
--- 545,556 ----
/* interactive = FALSE; */ /* should this be here? */
! } else {
! fp = openTCP(*argv);
! load_file(fp, *argv, FALSE);
! fprintf(stderr, "gnuplot : EOF or there was an error"
! "in the input stream.\n");
! }
}
#ifdef _Windows
if (noend) {
***************
*** 725,727 ****
--- 747,1053 ----
return 0;
}
#endif
+
+ /*
+ * TAKAYAMA Nobuki
+ */
+ FILE *
+ openTCP(name)
+ char *name;
+ {
+ FILE *fp;
+ int fd, port, reverse = 0;
+
+ fprintf(stderr, "openTCP port number : %s\n", name);
+
+ if (name[0] == 'r') {
+ fprintf(stderr, "openTCP : trying to reverse connetion.\n");
+ reverse = 1;
+ sscanf(&name[1], "%d", &port);
+ } else {
+ sscanf(name, "%d", &port);
+ }
+
+ if (reverse) {
+ fd = socketConnect("localhost", port);
+ fprintf(stderr, "socketConnect is succeded: fd = %d.", fd);
+ } else {
+ fprintf(stderr, "Port number is %d.\n", port);
+ fd = socketOpen("localhost", port);
+ fprintf(stderr, "socketOpen is succeded: fd = %d.", fd);
+ fd = socketAccept(fd);
+ }
+
+ fprintf(stderr, "\n Port %d : Connected.\n", port);
+ fp = fdopen(fd, "r");
+
+ return(fp);
+ }
+
+ #define READBUFSIZE 10000
+
+ int OpenedSocket = 0, Quiet = 0;
+
+ int
+ socketConnect(serverName, portNumber)
+ char *serverName;
+ int portNumber;
+ {
+ struct hostent *servhost;
+ struct sockaddr_in serv;
+ int socketid, on;
+
+ if ((servhost = gethostbyname(serverName)) == NULL) {
+ fprintf(stderr, "Bad server name.\n\n");
+ return (-1);
+ }
+
+ bzero((void *)&serv, sizeof(serv));
+ serv.sin_family = AF_INET;
+ serv.sin_port = htons(portNumber);
+ bcopy(servhost->h_addr, (void *)&serv.sin_addr, servhost->h_length);
+
+ if ((socketid = socket(AF_INET, SOCK_STREAM, 0)) <0) {
+ fprintf(stderr, "Socket allocation is failed.\n\n");
+ return (-1);
+ }
+
+ #if 0 /* XXX */
+ on = 1;
+ setsockopt(socketid, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on));
+ #endif
+
+ if (!Quiet) {
+ fprintf(stderr, "Trying to connect port %d, ip=%x\n",
+ ntohs(serv.sin_port), serv.sin_addr);
+ }
+
+ if (connect(socketid, (struct sockaddr *)&serv, sizeof(serv)) == -1) {
+ fprintf(stderr, "cannot connect\n");
+ return (-1);
+ }
+
+ if (!Quiet)
+ fprintf(stderr, "connected.\n");
+
+ return(socketid);
+ }
+
+ int
+ socketOpen(serverName, portNumber)
+ char *serverName;
+ int portNumber;
+ {
+ static struct hostent *servhost;
+ static struct sockaddr_in serv;
+ static int s_wait;
+ static int on;
+ extern int errno;
+ int tt;
+
+ fprintf(stderr, "Hello from open. serverName is %s "
+ "and portNumber is %d\n", serverName, portNumber);
+
+ if ((servhost = gethostbyname(serverName)) == NULL) {
+ fprintf(stderr, "Bad server name.\n");
+ return (-1);
+ }
+
+ bzero((void *)&serv, sizeof(serv));
+ serv.sin_family = AF_INET;
+ serv.sin_port = htons(portNumber);
+ bcopy(servhost->h_addr, &serv.sin_addr, servhost->h_length);
+
+ if ((s_wait = socket(AF_INET,SOCK_STREAM, 0)) < 0) {
+ fprintf(stderr, "Socket allocation is failed.\n");
+ return (-1);
+ }
+
+ on = 1;
+ setsockopt(s_wait, SOL_SOCKET,SO_REUSEADDR, &on, sizeof(on));
+
+ /* important */
+ if ((tt = bind(s_wait, (struct sockaddr *)&serv, sizeof(serv))) == -1) {
+ fprintf(stderr, "bind error. Error no is %d. "
+ "See /usr/include/sys/errno.h. "
+ "(asm/errno.h)\n", errno);
+ fprintf(stderr, "cannot bind\n");
+ return (-1);
+ }
+
+ #if 0 /* XXX */
+ printf("bind returns %d\n", tt);
+ #endif
+
+ tt = sizeof(serv);
+ if (getsockname(s_wait, (struct sockaddr *)&serv, &tt) < 0) {
+ fprintf(stderr, "getsockname error. Error no is %d. "
+ "See /usr/include/sys/errno.h "
+ "(asm/errno.h).\n", errno);
+ fprintf(stderr, "cannot getsockname\n");
+ return (-1);
+ }
+
+ if (listen(s_wait, 1) < 0) {
+ fprintf(stderr, "Listen failed\n");
+ return (-1);
+ }
+
+ fprintf(stderr, "Done the initialization. "
+ "port =%d\n", ntohs(serv.sin_port));
+ OpenedSocket = ntohs(serv.sin_port);
+
+ return (s_wait);
+ }
+
+ int
+ socketAccept(snum)
+ int snum;
+ {
+ int s, news;
+
+ s = snum;
+
+ fprintf(stderr, "Trying to accept... ");
+ fflush(stderr);
+
+ if ((news = accept(s, NULL, NULL)) < 0) {
+ fprintf(stderr, "Error in accept.\n");
+ return (-1);
+ }
+
+ fprintf(stderr, "Accepted.\n");
+ fflush(stderr);
+
+ if (close(s) < 0) {
+ fprintf(stderr, "Error in closing the old socket.\n");
+ return (-1);
+ }
+
+ return(news);
+ }
+
+ int
+ oxSocketSelect0(fd, t)
+ int fd, t;
+ {
+ fd_set readfds;
+ struct timeval timeout;
+ int debug = 0;
+ extern int errno;
+
+ FD_ZERO(&readfds);
+ FD_SET(fd, &readfds);
+ timeout.tv_sec = 0;
+ timeout.tv_usec = (long)t;
+
+ if (t >= 0) {
+ if (debug) {
+ printf("select t >= 0 for fd = %d\n", fd);
+ fflush(NULL);
+ }
+
+ /* It must be fd + 1!, Not fd. */
+ if (select(fd + 1, &readfds, NULL, NULL, &timeout) < 0) {
+ fprintf(stderr, "select (non-block) error. "
+ "Error no is %d. "
+ "See /usr/include/sys/errno.h "
+ "(asm/errno.h).\n", errno);
+ fprintf(stderr, "oxSocketSelect0() : select failed.\n");
+ return (0);
+ }
+
+ if (debug) {
+ printf("Return from select t >= 0 for fd = %d\n", fd);
+ fflush(NULL);
+ }
+ } else {
+ /* block */
+ if (select(fd + 1, &readfds, NULL, NULL, NULL) < 0) {
+ fprintf(stderr, "select (block) error. "
+ "Error no is %d. "
+ "See /usr/include/sys/errno.h "
+ "(asm/errno.h).\n", errno);
+ fprintf(stderr, "socketSelect0() : select failed.\n");
+ return (0);
+ }
+ }
+
+ if (FD_ISSET(fd, &readfds)) {
+ return(1);
+ } else {
+ return(0);
+ }
+ }
+
+ int
+ oxSocketMultiSelect(sid, size, t, result)
+ int sid[], size, t, result[];
+ {
+ fd_set readfds;
+ struct timeval timeout;
+ int i, fd, p, isdata = 0;
+ extern int errno;
+
+ FD_ZERO(&readfds);
+ timeout.tv_sec = 0;
+ timeout.tv_usec = (long)t;
+
+ fd = 0;
+
+ for (i = 0 ; i < size ; i++) {
+ if (sid[i] >= 0) {
+ p = sid[i];
+ if (p > fd)
+ fd = p;
+ FD_SET(p,&readfds);
+ #if 0 /* XXX */
+ printf("p = %d, fd=%d", p, fd);
+ #endif
+ }
+ }
+
+ #if 0 /* XXX */
+ printf("MultiSelect..\n");
+ fflush(NULL);
+ #endif
+
+ if (t >= 0) {
+ /* It must be fd + 1!, Not fd. */
+ if (select(fd + 1, &readfds, NULL, NULL, &timeout) < 0) {
+ fprintf(stderr, "Select error. Error no is %d. "
+ "See /usr/include/sys/errno.h "
+ "(asm/errno.h).\n", errno);
+ fprintf(stderr, "oxSocketMultiSelect() : "
+ "select failed.\n");
+ return (0);
+ }
+ } else {
+ /* block */
+ if (select(fd + 1, &readfds, NULL, NULL, NULL) < 0) {
+ fprintf(stderr, "Select error. Error no is %d. "
+ "See /usr/include/sys/errno.h "
+ "(asm/errno.h).\n", errno);
+ fprintf(stderr, "oxSocketMultiSelect() : "
+ "(block) select failed.\n");
+ return (0);
+ }
+ }
+
+ #if 0 /* XXX */
+ printf("Done. MultiSelect.\n");
+ fflush(NULL);
+ #endif
+
+ for (i = 0 ; i < size ; i++) {
+ p = sid[i];
+ if ((sid[i] >= 0) && FD_ISSET(p, &readfds)) {
+ result[i] = 1;
+ isdata = 1;
+ } else {
+ result[i] = 0;
+ }
+ }
+
+ return (isdata);
+ }