From 0f0bc3f1d526924ef4a75ad25dd0ec3771a66496 Mon Sep 17 00:00:00 2001 From: Markus Armbruster Date: Thu, 18 Feb 2010 20:13:51 +0100 Subject: error: Track locations on command line New LOC_CMDLINE. Use it for tracking option with argument in lookup_opt(). We now report errors like this qemu: -device smbus-eeprom: Did not find I2C bus for smbus-eeprom --- qemu-error.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'qemu-error.c') diff --git a/qemu-error.c b/qemu-error.c index 23176e16a8..5be6bea4c9 100644 --- a/qemu-error.c +++ b/qemu-error.c @@ -113,6 +113,16 @@ void loc_set_none(void) cur_loc->kind = LOC_NONE; } +/* + * Change the current location to argument ARGV[IDX..IDX+CNT-1]. + */ +void loc_set_cmdline(char **argv, int idx, int cnt) +{ + cur_loc->kind = LOC_CMDLINE; + cur_loc->num = cnt; + cur_loc->ptr = argv + idx; +} + /* * Change the current location to file FNAME, line LNO. */ @@ -143,12 +153,22 @@ void error_set_progname(const char *argv0) void error_print_loc(void) { const char *sep = ""; + int i; + const char *const *argp; if (!cur_mon) { fprintf(stderr, "%s:", progname); sep = " "; } switch (cur_loc->kind) { + case LOC_CMDLINE: + argp = cur_loc->ptr; + for (i = 0; i < cur_loc->num; i++) { + error_printf("%s%s", sep, argp[i]); + sep = " "; + } + error_printf(": "); + break; case LOC_FILE: error_printf("%s:", (const char *)cur_loc->ptr); if (cur_loc->num) { -- cgit v1.2.3