[BACK]Return to plot.c.diff CVS log [TXT][DIR] Up to [local] / OpenXM / src / gnuplot

File: [local] / OpenXM / src / gnuplot / Attic / plot.c.diff (download)

Revision 1.3, Mon Mar 20 18:54:24 2000 UTC (24 years, 2 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);
+ }