From 49d2ff06d8f8fd9ae3947594bf342ee06c565911 Mon Sep 17 00:00:00 2001 From: Steve Price Date: Fri, 7 Jul 2000 19:31:03 +0000 Subject: From the submitter: The wwwoffled program in the www/wwwoffle port doesn't retry a select() call when select() fails with EINTR, which it should do. This causes problems such as a 'wwwoffle -offline' command not taking effect which can be annoying. PR: 19652 Submitted by: maintainer --- www/wwwoffle/files/patch-ac | 84 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 www/wwwoffle/files/patch-ac (limited to 'www/wwwoffle/files') diff --git a/www/wwwoffle/files/patch-ac b/www/wwwoffle/files/patch-ac new file mode 100644 index 000000000000..7134de8be169 --- /dev/null +++ b/www/wwwoffle/files/patch-ac @@ -0,0 +1,84 @@ +--- io.c.orig Sun Jan 2 19:55:12 2000 ++++ io.c Mon May 29 20:40:30 2000 +@@ -135,14 +135,17 @@ + fd_set readfd; + struct timeval tv; + +- FD_ZERO(&readfd); +- +- FD_SET(fd,&readfd); +- +- tv.tv_sec=tv.tv_usec=0; +- +- if(select(fd+1,&readfd,NULL,NULL,&tv)<=0) +- return(nr); ++ while(1) ++ { ++ tv.tv_sec=tv.tv_usec=0; ++ FD_ZERO(&readfd); ++ FD_SET(fd,&readfd); ++ n=select(fd+1,&readfd,NULL,NULL,&tv); ++ if(n>0) ++ break; ++ if(n==0 || errno!=EINTR) ++ return(nr); ++ } + + n=read(fd,fdbuf[fd],BUFSIZE); + +@@ -206,15 +209,18 @@ + fd_set readfd; + struct timeval tv; + +- FD_ZERO(&readfd); +- +- FD_SET(fd,&readfd); +- +- tv.tv_sec=timeout; +- tv.tv_usec=0; +- +- if(select(fd+1,&readfd,NULL,NULL,&tv)<=0) +- return(-1); ++ while(1) ++ { ++ tv.tv_sec=timeout; ++ tv.tv_usec=0; ++ FD_ZERO(&readfd); ++ FD_SET(fd,&readfd); ++ nr=select(fd+1,&readfd,NULL,NULL,&tv); ++ if(nr>0) ++ break; ++ if(nr==0 || errno!=EINTR) ++ return(-1); ++ } + + nr=read(fd,buffer,n); + } +@@ -364,15 +370,18 @@ + fd_set readfd; + struct timeval tv; + +- FD_ZERO(&readfd); +- +- FD_SET(fd,&readfd); +- +- tv.tv_sec=timeout; +- tv.tv_usec=0; +- +- if(select(fd+1,&readfd,NULL,NULL,&tv)<=0) +- return(-1); ++ while(1) ++ { ++ tv.tv_sec=timeout; ++ tv.tv_usec=0; ++ FD_ZERO(&readfd); ++ FD_SET(fd,&readfd); ++ n=select(fd+1,&readfd,NULL,NULL,&tv); ++ if(n>0) ++ break; ++ if(n==0 || errno!=EINTR) ++ return(-1); ++ } + + n=read(fd,fdbuf[fd]+fdbytes[fd],BUFSIZE-fdbytes[fd]); + fdbytes[fd]+=n; -- cgit v1.2.3