]> git.saurik.com Git - apt.git/blobdiff - apt-pkg/contrib/fileutl.cc
* use the new cool rred method for the patchting
[apt.git] / apt-pkg / contrib / fileutl.cc
index 00afc8050f6ce64f87f1d96f8c27fbdc1f7c7609..0ce0c9b9da55a4f5f48542c3191fbed63475d40c 100644 (file)
@@ -1,6 +1,6 @@
 // -*- mode: cpp; mode: fold -*-
 // Description                                                         /*{{{*/
 // -*- mode: cpp; mode: fold -*-
 // Description                                                         /*{{{*/
-// $Id: fileutl.cc,v 1.41 2002/04/24 05:02:40 jgg Exp $
+// $Id: fileutl.cc,v 1.42 2002/09/14 05:29:22 jgg Exp $
 /* ######################################################################
    
    File Utilities
 /* ######################################################################
    
    File Utilities
@@ -9,7 +9,7 @@
    GetLock - dpkg compatible lock file manipulation (fcntl)
    
    This source is placed in the Public Domain, do with it what you will
    GetLock - dpkg compatible lock file manipulation (fcntl)
    
    This source is placed in the Public Domain, do with it what you will
-   It was originally written by Jason Gunthorpe.
+   It was originally written by Jason Gunthorpe <jgg@debian.org>.
    
    ##################################################################### */
                                                                        /*}}}*/
    
    ##################################################################### */
                                                                        /*}}}*/
@@ -306,7 +306,7 @@ bool WaitFd(int Fd,bool write,unsigned long timeout)
 /* This is used if you want to cleanse the environment for the forked 
    child, it fixes up the important signals and nukes all of the fds,
    otherwise acts like normal fork. */
 /* This is used if you want to cleanse the environment for the forked 
    child, it fixes up the important signals and nukes all of the fds,
    otherwise acts like normal fork. */
-int ExecFork()
+pid_t ExecFork(int dontCloseThisFd)
 {
    // Fork off the process
    pid_t Process = fork();
 {
    // Fork off the process
    pid_t Process = fork();
@@ -329,7 +329,8 @@ int ExecFork()
       
       // Close all of our FDs - just in case
       for (int K = 3; K != 40; K++)
       
       // Close all of our FDs - just in case
       for (int K = 3; K != 40; K++)
-        fcntl(K,F_SETFD,FD_CLOEXEC);
+        if(K != dontCloseThisFd)
+           fcntl(K,F_SETFD,FD_CLOEXEC);
    }
    
    return Process;
    }
    
    return Process;
@@ -340,7 +341,7 @@ int ExecFork()
 /* Waits for the given sub process. If Reap is set then no errors are 
    generated. Otherwise a failed subprocess will generate a proper descriptive
    message */
 /* Waits for the given sub process. If Reap is set then no errors are 
    generated. Otherwise a failed subprocess will generate a proper descriptive
    message */
-bool ExecWait(int Pid,const char *Name,bool Reap)
+bool ExecWait(pid_t Pid,const char *Name,bool Reap)
 {
    if (Pid <= 1)
       return true;
 {
    if (Pid <= 1)
       return true;
@@ -355,7 +356,7 @@ bool ExecWait(int Pid,const char *Name,bool Reap)
       if (Reap == true)
         return false;
       
       if (Reap == true)
         return false;
       
-      return _error->Error(_("Waited, for %s but it wasn't there"),Name);
+      return _error->Error(_("Waited for %s but it wasn't there"),Name);
    }
 
    
    }