This is the mail archive of the
lvm2-cvs@sourceware.org
mailing list for the LVM2 project.
LVM2 ./WHATS_NEW lib/report/report.c
- From: agk at sourceware dot org
- To: lvm2-cvs at sourceware dot org
- Date: 2 Oct 2006 16:46:28 -0000
- Subject: LVM2 ./WHATS_NEW lib/report/report.c
CVSROOT: /cvs/lvm2
Module name: LVM2
Changes by: agk@sourceware.org 2006-10-02 16:46:27
Modified files:
. : WHATS_NEW
lib/report : report.c
Log message:
Show available fields if report given invalid field. (e.g. lvs -o list)
Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/WHATS_NEW.diff?cvsroot=lvm2&r1=1.446&r2=1.447
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/report/report.c.diff?cvsroot=lvm2&r1=1.47&r2=1.48
--- LVM2/WHATS_NEW 2006/09/30 20:02:02 1.446
+++ LVM2/WHATS_NEW 2006/10/02 16:46:27 1.447
@@ -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().
--- LVM2/lib/report/report.c 2006/08/21 12:54:53 1.47
+++ LVM2/lib/report/report.c 2006/10/02 16:46:27 1.48
@@ -948,6 +948,44 @@
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 @@
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;