diff options
author | Markus Armbruster <armbru@redhat.com> | 2010-02-18 19:46:49 +0100 |
---|---|---|
committer | Markus Armbruster <armbru@redhat.com> | 2010-03-16 16:58:32 +0100 |
commit | 827b08139c8ba97c18bda19e4893fdf26878b531 (patch) | |
tree | 1c02d74e56c7ee47b6542712a00872e02b794e9b /qemu-error.h | |
parent | ab5b027ee645f26320379d1d80cd96fdc944ecb5 (diff) |
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.
Diffstat (limited to 'qemu-error.h')
-rw-r--r-- | qemu-error.h | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/qemu-error.h b/qemu-error.h index 5b05371fcf..a1562aaa02 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, ...) |