diff options
author | Steve Price <steve@FreeBSD.org> | 2000-07-07 19:31:03 +0000 |
---|---|---|
committer | Steve Price <steve@FreeBSD.org> | 2000-07-07 19:31:03 +0000 |
commit | 49d2ff06d8f8fd9ae3947594bf342ee06c565911 (patch) | |
tree | b32d9fdfa8724f87a376495cfb7cec19fbc482a8 /www/wwwoffle | |
parent | Update to version 1.3p5. (diff) |
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
Notes
Notes:
svn path=/head/; revision=30334
Diffstat (limited to 'www/wwwoffle')
-rw-r--r-- | www/wwwoffle/files/patch-ac | 84 |
1 files changed, 84 insertions, 0 deletions
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; |