소스 검색

libdpkg: Change error printer argument from const char * to const void *

This will allow passing any other data to the printer callback beside
a string.
Guillem Jover 12 년 전
부모
커밋
43e95b3aea
5개의 변경된 파일19개의 추가작업 그리고 16개의 파일을 삭제
  1. 9 9
      lib/dpkg/ehandle.c
  2. 4 4
      lib/dpkg/ehandle.h
  3. 1 1
      lib/dpkg/subproc.c
  4. 4 1
      src/errors.c
  5. 1 1
      src/main.h

+ 9 - 9
lib/dpkg/ehandle.c

@@ -73,7 +73,7 @@ struct error_context {
 
   struct {
     error_printer_func *func;
-    const char *data;
+    const void *data;
   } printer;
 
   struct cleanup_entry *cleanups;
@@ -130,10 +130,10 @@ error_context_new(void)
 
 static void
 set_error_printer(struct error_context *ec, error_printer_func *func,
-                  const char *contextstring)
+                  const void *data)
 {
   ec->printer.func = func;
-  ec->printer.data = contextstring;
+  ec->printer.data = data;
 }
 
 static void
@@ -153,12 +153,12 @@ set_jump_handler(struct error_context *ec, jmp_buf *jump)
 void
 push_error_context_func(error_handler_func *handler,
                         error_printer_func *printer,
-                        const char *contextstring)
+                        const void *printer_data)
 {
   struct error_context *ec;
 
   ec = error_context_new();
-  set_error_printer(ec, printer, contextstring);
+  set_error_printer(ec, printer, printer_data);
   set_func_handler(ec, handler);
   onerr_abort = 0;
 }
@@ -166,12 +166,12 @@ push_error_context_func(error_handler_func *handler,
 void
 push_error_context_jump(jmp_buf *jumper,
                         error_printer_func *printer,
-                        const char *contextstring)
+                        const void *printer_data)
 {
   struct error_context *ec;
 
   ec = error_context_new();
-  set_error_printer(ec, printer, contextstring);
+  set_error_printer(ec, printer, printer_data);
   set_jump_handler(ec, jumper);
   onerr_abort = 0;
 }
@@ -183,7 +183,7 @@ push_error_context(void)
 }
 
 static void
-print_cleanup_error(const char *emsg, const char *contextstring)
+print_cleanup_error(const char *emsg, const void *data)
 {
   fprintf(stderr, _("%s: error while cleaning up:\n %s\n"),
           dpkg_get_progname(), emsg);
@@ -353,7 +353,7 @@ catch_fatal_error(void)
 }
 
 void
-print_fatal_error(const char *emsg, const char *contextstring)
+print_fatal_error(const char *emsg, const void *data)
 {
   fprintf(stderr, _("%s: error: %s\n"), dpkg_get_progname(), emsg);
 }

+ 4 - 4
lib/dpkg/ehandle.h

@@ -45,17 +45,17 @@ enum {
 };
 
 typedef void error_handler_func(void);
-typedef void error_printer_func(const char *emsg, const char *contextstring);
+typedef void error_printer_func(const char *emsg, const void *data);
 
-void print_fatal_error(const char *emsg, const char *contextstring);
+void print_fatal_error(const char *emsg, const void *data);
 void catch_fatal_error(void);
 
 void push_error_context_jump(jmp_buf *jumper,
                              error_printer_func *printer,
-                             const char *contextstring);
+                             const void *printer_data);
 void push_error_context_func(error_handler_func *handler,
                              error_printer_func *printer,
-                             const char *contextstring);
+                             const void *printer_data);
 void push_error_context(void);
 void pop_error_context(int flagset);
 

+ 1 - 1
lib/dpkg/subproc.c

@@ -73,7 +73,7 @@ subproc_signals_cleanup(int argc, void **argv)
 }
 
 static void
-print_subproc_error(const char *emsg, const char *contextstring)
+print_subproc_error(const char *emsg, const void *data)
 {
 	fprintf(stderr, _("%s (subprocess): %s\n"), dpkg_get_progname(), emsg);
 }

+ 4 - 1
src/errors.c

@@ -54,8 +54,11 @@ static struct error_report *reports = NULL;
 static struct error_report **lastreport= &reports;
 static struct error_report emergency;
 
-void print_error_perpackage(const char *emsg, const char *arg) {
+void
+print_error_perpackage(const char *emsg, const void *data)
+{
   struct error_report *nr;
+  const char *arg = data;
 
   notice(_("error processing %s (--%s):\n %s"), arg, cipaction->olong, emsg);
 

+ 1 - 1
src/main.h

@@ -203,7 +203,7 @@ void cu_prermremove(int argc, void **argv);
 
 /* from errors.c */
 
-void print_error_perpackage(const char *emsg, const char *arg);
+void print_error_perpackage(const char *emsg, const void *data);
 void forcibleerr(int forceflag, const char *format, ...) DPKG_ATTR_PRINTF(2);
 int reportbroken_retexitstatus(int ret);
 bool skip_due_to_hold(struct pkginfo *pkg);