From 827b08139c8ba97c18bda19e4893fdf26878b531 Mon Sep 17 00:00:00 2001 From: Markus Armbruster Date: Thu, 18 Feb 2010 19:46:49 +0100 Subject: error: Infrastructure to track locations for error reporting New struct Location holds a location. So far, the only location is LOC_NONE, so this doesn't do anything useful yet. Passing the current location all over the place would be too cumbersome. Hide it away in static cur_loc instead, and provide accessors. Print it in error_report(). Store it in QError, and print it in qerror_print(). Store it in QemuOpt, for use by qemu_opts_foreach(). This makes error_report() do the right thing when it runs within qemu_opts_foreach(). We may still have to store it in other data structures holding user input for better error messages. Left for another day. --- qemu-error.h | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'qemu-error.h') diff --git a/qemu-error.h b/qemu-error.h index 5b05371..a1562aa 100644 --- a/qemu-error.h +++ b/qemu-error.h @@ -13,8 +13,24 @@ #ifndef QEMU_ERROR_H #define QEMU_ERROR_H +typedef struct Location { + /* all members are private to qemu-error.c */ + enum { LOC_NONE } kind; + int num; + const void *ptr; + struct Location *prev; +} Location; + +Location *loc_push_restore(Location *loc); +Location *loc_push_none(Location *loc); +Location *loc_pop(Location *loc); +Location *loc_save(Location *loc); +void loc_restore(Location *loc); +void loc_set_none(void); + void error_vprintf(const char *fmt, va_list ap); void error_printf(const char *fmt, ...) __attribute__ ((format(printf, 1, 2))); +void error_print_loc(void); void error_report(const char *fmt, ...) __attribute__ ((format(printf, 1, 2))); void qerror_report_internal(const char *file, int linenr, const char *func, const char *fmt, ...) -- cgit v1.1