]> git.saurik.com Git - apt.git/blobdiff - apt-pkg/contrib/fileutl.cc
DumpAvail works and apt-cache is complete
[apt.git] / apt-pkg / contrib / fileutl.cc
index 6048ff0bb28e03553e74aaf100b322f33a9c9563..6f515fd670acf78f78e4795ac27c6f7dcd00ffd7 100644 (file)
@@ -1,6 +1,6 @@
 // -*- mode: cpp; mode: fold -*-
 // Description                                                         /*{{{*/
 // -*- mode: cpp; mode: fold -*-
 // Description                                                         /*{{{*/
-// $Id: fileutl.cc,v 1.1 1998/07/02 02:58:13 jgg Exp $
+// $Id: fileutl.cc,v 1.5 1998/07/15 05:56:43 jgg Exp $
 /* ######################################################################
    
    File Utilities
 /* ######################################################################
    
    File Utilities
    ##################################################################### */
                                                                        /*}}}*/
 // Include Files                                                       /*{{{*/
    ##################################################################### */
                                                                        /*}}}*/
 // Include Files                                                       /*{{{*/
-#include <fileutl.h>
-#include <pkglib/error.h>
+#ifdef __GNUG__
+#pragma implementation "apt-pkg/fileutl.h"
+#endif 
+#include <apt-pkg/fileutl.h>
+#include <apt-pkg/error.h>
 
 #include <unistd.h>
 #include <sys/stat.h>
 
 #include <unistd.h>
 #include <sys/stat.h>
@@ -110,7 +113,7 @@ string SafeGetCWD()
 /* The most commonly used open mode combinations are given with Mode */
 File::File(string FileName,OpenMode Mode, unsigned long Perms)
 {
 /* The most commonly used open mode combinations are given with Mode */
 File::File(string FileName,OpenMode Mode, unsigned long Perms)
 {
-   Flags = 0;
+   Flags = AutoClose;
    switch (Mode)
    {
       case ReadOnly:
    switch (Mode)
    {
       case ReadOnly:
@@ -202,9 +205,10 @@ bool File::Close()
 {
    bool Res = true;
    if ((Flags & AutoClose) == AutoClose)
 {
    bool Res = true;
    if ((Flags & AutoClose) == AutoClose)
-      if (close(iFd) != 0)
+      if (iFd >= 0 && close(iFd) != 0)
         Res &= _error->Errno("close","Problem closing the file");
         Res &= _error->Errno("close","Problem closing the file");
-      
+   iFd = -1;
+   
    if ((Flags & Fail) == Fail && (Flags & DelOnFail) == DelOnFail &&
        FileName.empty() == false)
       if (unlink(FileName.c_str()) != 0)
    if ((Flags & Fail) == Fail && (Flags & DelOnFail) == DelOnFail &&
        FileName.empty() == false)
       if (unlink(FileName.c_str()) != 0)