The following commit has been merged in the master branch:
commit 40a15bdb0c74ec3c20fe46248fbdd27e3e242bc0
Author: Guillem Jover <[EMAIL PROTECTED]>
Date:   Sat Dec 6 13:42:59 2008 +0200

    libdpkg: Add support for format strings to internerr

diff --git a/ChangeLog b/ChangeLog
index 7da93be..b4fd78a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,12 @@
 2008-12-08  Guillem Jover  <[EMAIL PROTECTED]>
 
+       * lib/dpkg.h (do_internerr): Reorder arguments. Support format
+       strings.
+       (internerr): Likewise.
+       * lib/ehandle.c (do_internerr): Likewise.
+
+2008-12-08  Guillem Jover  <[EMAIL PROTECTED]>
+
        * scripts/Dpkg/ErrorHandling.pm (@EXPORT): Remove 'failure'.
        (failure): Remove function.
        (syserr): Rename 'failure' string to 'error'.
diff --git a/lib/dpkg.h b/lib/dpkg.h
index 876b75e..05cc588 100644
--- a/lib/dpkg.h
+++ b/lib/dpkg.h
@@ -183,8 +183,12 @@ void push_checkpoint(int mask, int value);
 void pop_cleanup(int flagset);
 enum { ehflag_normaltidy=01, ehflag_bombout=02, ehflag_recursiveerror=04 };
 
-void do_internerr(const char *string, int line, const char *file) NONRETURNING;
-#define internerr(s) do_internerr(s,__LINE__,__FILE__)
+void do_internerr(const char *file, int line, const char *fmt, ...) 
NONRETURNING;
+#if HAVE_C99
+#define internerr(...) do_internerr(__FILE__, __LINE__, __VA_ARGS__)
+#else
+#define internerr(args...) do_internerr(__FILE__, __LINE__, args)
+#endif
 
 struct varbuf;
 void ohshit(const char *fmt, ...) NONRETURNING PRINTFFORMAT(1, 2);
diff --git a/lib/ehandle.c b/lib/ehandle.c
index 84f510c..2fd3600 100644
--- a/lib/ehandle.c
+++ b/lib/ehandle.c
@@ -316,8 +316,19 @@ void werr(const char *fn) {
   ohshite(_("error writing `%s'"),fn);
 }
 
-void do_internerr(const char *string, int line, const char *file) {
-  fprintf(stderr,_("%s:%d: internal error `%s'\n"),file,line,string);
+void
+do_internerr(const char *file, int line, const char *fmt, ...)
+{
+  va_list al;
+  char buf[1024];
+
+  va_start(al, fmt);
+  vsnprintf(buf, sizeof(buf), fmt, al);
+  va_end(al);
+
+  fprintf(stderr, _("%s:%s:%d: internal error: %s\n"),
+          thisname, file, line, buf);
+
   abort();
 }
 

-- 
dpkg's main repository


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to