summaryrefslogtreecommitdiff
path: root/apt-pkg
diff options
context:
space:
mode:
Diffstat (limited to 'apt-pkg')
-rw-r--r--apt-pkg/contrib/fileutl.cc19
-rw-r--r--apt-pkg/contrib/fileutl.h4
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);