diff options
-rw-r--r-- | apt-pkg/contrib/fileutl.cc | 19 | ||||
-rw-r--r-- | apt-pkg/contrib/fileutl.h | 4 |
2 files changed, 15 insertions, 8 deletions
diff --git a/apt-pkg/contrib/fileutl.cc b/apt-pkg/contrib/fileutl.cc index f34d839e3..5b7c76496 100644 --- a/apt-pkg/contrib/fileutl.cc +++ b/apt-pkg/contrib/fileutl.cc @@ -1,6 +1,6 @@ // -*- mode: cpp; mode: fold -*- // Description /*{{{*/ -// $Id: fileutl.cc,v 1.19 1999/02/08 07:30:50 jgg Exp $ +// $Id: fileutl.cc,v 1.20 1999/02/12 20:47:41 doogie Exp $ /* ###################################################################### File Utilities @@ -24,6 +24,7 @@ #include <sys/stat.h> #include <sys/fcntl.h> #include <sys/types.h> +#include <sys/time.h> #include <errno.h> /*}}}*/ @@ -164,15 +165,21 @@ void SetNonBlock(int Fd,bool Block) // --------------------------------------------------------------------- /* This waits for a FD to become readable using select. It is usefull for applications making use of non-blocking sockets. */ -bool WaitFd(int Fd) +bool WaitFd(int Fd, bool write = false, long timeout = 0) { fd_set Set; + struct timeval tv; FD_ZERO(&Set); FD_SET(Fd,&Set); - - if (select(Fd+1,&Set,0,0,0) <= 0) - return false; - + tv.tv_sec = timeout / 1000000; + tv.tv_usec = timeout % 1000000; + if(write) { + if (select(Fd+1,&Set,0,0,&tv) <= 0) + return false; + } else { + if (select(Fd+1,0,&Set,0,&tv) <= 0) + return false; + } return true; } /*}}}*/ diff --git a/apt-pkg/contrib/fileutl.h b/apt-pkg/contrib/fileutl.h index f35cf04d6..faec10c2d 100644 --- a/apt-pkg/contrib/fileutl.h +++ b/apt-pkg/contrib/fileutl.h @@ -1,6 +1,6 @@ // -*- mode: cpp; mode: fold -*- // Description /*{{{*/ -// $Id: fileutl.h,v 1.12 1999/01/18 06:20:08 jgg Exp $ +// $Id: fileutl.h,v 1.13 1999/02/12 20:47:41 doogie Exp $ /* ###################################################################### File Utilities @@ -66,7 +66,7 @@ bool FileExists(string File); string SafeGetCWD(); void SetCloseExec(int Fd,bool Close); void SetNonBlock(int Fd,bool Block); -bool WaitFd(int Fd); +bool WaitFd(int Fd, bool write = false, long timeout = 0); // File string manipulators string flNotDir(string File); |