X-Git-Url: https://git.saurik.com/apt.git/blobdiff_plain/578bfd0aed2ec993f4ad85fa6a7094a852261422..6627bdccce46a9acdae09d37e6e1444a5f7384e1:/apt-pkg/contrib/error.h

diff --git a/apt-pkg/contrib/error.h b/apt-pkg/contrib/error.h
index 06b998e5e..a5fc1a223 100644
--- a/apt-pkg/contrib/error.h
+++ b/apt-pkg/contrib/error.h
@@ -1,6 +1,6 @@
 // -*- mode: cpp; mode: fold -*-
 // Description								/*{{{*/
-// $Id: error.h,v 1.1 1998/07/02 02:58:13 jgg Exp $
+// $Id: error.h,v 1.8 2001/05/07 05:06:52 jgg Exp $
 /* ######################################################################
    
    Global Erorr Class - Global error mechanism
@@ -37,12 +37,25 @@
    
    ##################################################################### */
 									/*}}}*/
-// Header section: pkglib
 #ifndef PKGLIB_ERROR_H
 #define PKGLIB_ERROR_H
 
+#ifdef __GNUG__
+#pragma interface "apt-pkg/error.h"
+#endif 
+
+#ifdef __GNUG__
+// Methods have a hidden this parameter that is visible to this attribute
+#define APT_MFORMAT1 __attribute__ ((format (printf, 2, 3)))
+#define APT_MFORMAT2 __attribute__ ((format (printf, 3, 4)))
+#else
+#define APT_MFORMAT1
+#define APT_MFORMAT2    
+#endif    
+    
 #include <string>
-#include <vector.h>
+
+using std::string;
 
 class GlobalError
 {
@@ -50,26 +63,29 @@ class GlobalError
    {
       string Text;
       bool Error;
+      Item *Next;
    };
    
-   vector<Item> List;
+   Item *List;
    bool PendingFlag;
+   void Insert(Item *I);
    
    public:
 
    // Call to generate an error from a library call.
-   bool Errno(const char *Function,const char *Description,...);
+   bool Errno(const char *Function,const char *Description,...) APT_MFORMAT2;
+   bool WarningE(const char *Function,const char *Description,...) APT_MFORMAT2;
 
    /* A warning should be considered less severe than an error, and may be
       ignored by the client. */
-   bool Error(const char *Description,...);
-   bool Warning(const char *Description,...);
+   bool Error(const char *Description,...) APT_MFORMAT1;
+   bool Warning(const char *Description,...) APT_MFORMAT1;
 
    // Simple accessors
    inline bool PendingError() {return PendingFlag;};
-   inline bool empty() {return List.empty();};
+   inline bool empty() {return List == 0;};
    bool PopMessage(string &Text);
-   void Discard() {List.erase(List.begin(),List.end()); PendingFlag = false;};
+   void Discard();
 
    // Usefull routine to dump to cerr
    void DumpErrors();
@@ -77,8 +93,11 @@ class GlobalError
    GlobalError();
 };
 
-/* The 'extra-ansi' syntax is used to help with collisions. This is the 
-   single global instance of this class. */
-extern GlobalError *_error;
+// The 'extra-ansi' syntax is used to help with collisions. 
+GlobalError *_GetErrorObj();
+#define _error _GetErrorObj()
+
+#undef APT_MFORMAT1
+#undef APT_MFORMAT2
 
 #endif