From: Alasdair Kergon Date: Mon, 2 Oct 2006 16:46:27 +0000 (+0000) Subject: Show available fields if report given invalid field. (e.g. lvs -o list) X-Git-Tag: v2_02_91~4413 X-Git-Url: https://sourceware.org/git/?a=commitdiff_plain;h=1baed0e1aef0e62af6437fe2ba040ff28a836988;p=lvm2.git Show available fields if report given invalid field. (e.g. lvs -o list) --- diff --git a/WHATS_NEW b/WHATS_NEW index 703b11d52..963d58629 100644 --- a/WHATS_NEW +++ b/WHATS_NEW @@ -1,5 +1,6 @@ Version 2.02.11 - ===================================== + Show available fields if report given invalid field. (e.g. lvs -o list) Add timestamp functions with --disable-realtime configure option. Add %VG, %LV and %FREE suffices to lvcreate/lvresize --extents arg. Fix two potential NULL pointer derefs in error cases in vg_read(). diff --git a/lib/report/report.c b/lib/report/report.c index 02e0ce018..e9361553a 100644 --- a/lib/report/report.c +++ b/lib/report/report.c @@ -948,6 +948,44 @@ static struct { const unsigned int _num_fields = sizeof(_fields) / sizeof(_fields[0]); +static void _display_fields(void) +{ + uint32_t f; + const char *type, *last_type = ""; + + for (f = 0; f < _num_fields; f++) { + switch (_fields[f].type) { + case PVS: + type = "Physical Volume"; + break; + case LVS: + type = "Logical Volume"; + break; + case VGS: + type = "Volume Group"; + break; + case SEGS: + type = "Logical Volume Segment"; + break; + case PVSEGS: + type = "Physical Volume Segment"; + break; + default: + type = " "; + } + + if (type != last_type) { + if (*last_type) + log_print(" "); + log_print("%s Fields", type); + } + + log_print("- %s", _fields[f].id); + + last_type = type; + } +} + /* * Initialise report handle */ @@ -1080,6 +1118,8 @@ static int _parse_options(struct report_handle *rh, const char *format) while (*we && *we != ',') we++; if (!_field_match(rh, ws, (size_t) (we - ws))) { + _display_fields(); + log_print(" "); log_error("Unrecognised field: %.*s", (int) (we - ws), ws); return 0;