Add -p switch to "zpool get" rertzinger/feature-zpool-get--p
authorRalf Ertzinger <ralf@skytale.net>
Wed, 23 Oct 2013 08:50:48 +0000 (10:50 +0200)
committerRalf Ertzinger <ralf@skytale.net>
Wed, 23 Oct 2013 08:50:48 +0000 (10:50 +0200)
This works the same as the -p switch to "zfs get", displaying full
resolution values for appropriate attributes.

cmd/zpool/zpool_main.c
man/man8/zpool.8

index b96fbe4..2632e8c 100644 (file)
@@ -265,7 +265,7 @@ get_usage(zpool_help_t idx) {
        case HELP_EVENTS:
                return (gettext("\tevents [-vHfc]\n"));
        case HELP_GET:
        case HELP_EVENTS:
                return (gettext("\tevents [-vHfc]\n"));
        case HELP_GET:
-               return (gettext("\tget <\"all\" | property[,...]> "
+               return (gettext("\tget [-p] <\"all\" | property[,...]> "
                    "<pool> ...\n"));
        case HELP_SET:
                return (gettext("\tset <property=value> <pool> \n"));
                    "<pool> ...\n"));
        case HELP_SET:
                return (gettext("\tset <property=value> <pool> \n"));
@@ -3098,6 +3098,9 @@ zpool_do_list(int argc, char **argv)
 
        argc -= optind;
        argv += optind;
 
        argc -= optind;
        argv += optind;
+       fprintf(stderr, "argc = %d\n", argc);
+       for (c=0; c<argc; c++)
+               fprintf(stderr, "argv[%d] = %s\n", argc, argv[c]);
 
        get_interval_count(&argc, argv, &interval, &count);
 
 
        get_interval_count(&argc, argv, &interval, &count);
 
@@ -5466,8 +5469,8 @@ get_callback(zpool_handle_t *zhp, void *data)
                                    NULL, NULL);
                        }
                } else {
                                    NULL, NULL);
                        }
                } else {
-                       if (zpool_get_prop(zhp, pl->pl_prop, value,
-                           sizeof (value), &srctype) != 0)
+                       if (zpool_get_prop_literal(zhp, pl->pl_prop, value,
+                           sizeof (value), &srctype, cbp->cb_literal) != 0)
                                continue;
 
                        zprop_print_one_property(zpool_get_name(zhp), cbp,
                                continue;
 
                        zprop_print_one_property(zpool_get_name(zhp), cbp,
@@ -5483,9 +5486,26 @@ zpool_do_get(int argc, char **argv)
 {
        zprop_get_cbdata_t cb = { 0 };
        zprop_list_t fake_name = { 0 };
 {
        zprop_get_cbdata_t cb = { 0 };
        zprop_list_t fake_name = { 0 };
-       int ret;
+       int c, ret;
 
 
-       if (argc < 2) {
+       /* check options */
+       while ((c = getopt(argc, argv, "p")) != -1) {
+               switch (c) {
+               case 'p':
+                       cb.cb_literal = B_TRUE;
+                       break;
+
+               case '?':
+                       (void) fprintf(stderr, gettext("invalid option '%c'\n"),
+                           optopt);
+                       usage(B_FALSE);
+               }
+       }
+
+       argc -= optind;
+       argv += optind;
+
+       if (argc < 1) {
                (void) fprintf(stderr, gettext("missing property "
                    "argument\n"));
                usage(B_FALSE);
                (void) fprintf(stderr, gettext("missing property "
                    "argument\n"));
                usage(B_FALSE);
@@ -5499,7 +5519,7 @@ zpool_do_get(int argc, char **argv)
        cb.cb_columns[3] = GET_COL_SOURCE;
        cb.cb_type = ZFS_TYPE_POOL;
 
        cb.cb_columns[3] = GET_COL_SOURCE;
        cb.cb_type = ZFS_TYPE_POOL;
 
-       if (zprop_get_list(g_zfs, argv[1], &cb.cb_proplist,
+       if (zprop_get_list(g_zfs, argv[0], &cb.cb_proplist,
            ZFS_TYPE_POOL) != 0)
                usage(B_FALSE);
 
            ZFS_TYPE_POOL) != 0)
                usage(B_FALSE);
 
@@ -5510,7 +5530,7 @@ zpool_do_get(int argc, char **argv)
                cb.cb_proplist = &fake_name;
        }
 
                cb.cb_proplist = &fake_name;
        }
 
-       ret = for_each_pool(argc - 2, argv + 2, B_TRUE, &cb.cb_proplist,
+       ret = for_each_pool(argc - 1, argv + 1, B_TRUE, &cb.cb_proplist,
            get_callback, &cb);
 
        if (cb.cb_proplist == &fake_name)
            get_callback, &cb);
 
        if (cb.cb_proplist == &fake_name)
index b4b0f46..82ef204 100644 (file)
@@ -62,7 +62,7 @@ zpool \- configures ZFS storage pools
 
 .LP
 .nf
 
 .LP
 .nf
-\fBzpool get\fR "\fIall\fR" | \fIproperty\fR[,...] \fIpool\fR ...
+\fBzpool get\fR [\fB-p\fR] "\fIall\fR" | \fIproperty\fR[,...] \fIpool\fR ...
 .fi
 
 .LP
 .fi
 
 .LP
@@ -1036,7 +1036,7 @@ This command will forcefully export the pool even if it has a shared spare that
 .ne 2
 .mk
 .na
 .ne 2
 .mk
 .na
-\fB\fBzpool get\fR "\fIall\fR" | \fIproperty\fR[,...] \fIpool\fR ...\fR
+\fB\fBzpool get\fR [\fB-p\fR] "\fIall\fR" | \fIproperty\fR[,...] \fIpool\fR ...\fR
 .ad
 .sp .6
 .RS 4n
 .ad
 .sp .6
 .RS 4n
@@ -1053,6 +1053,17 @@ Retrieves the given list of properties (or all properties if "\fBall\fR" is used
 .sp
 
 See the "Properties" section for more information on the available pool properties.
 .sp
 
 See the "Properties" section for more information on the available pool properties.
+.sp
+.ne 2
+.mk
+.na
+\fB\fB-p\fR\fR
+.ad
+.RS 6n
+.rt
+Display numbers in parseable (exact) values.
+.RE
+
 .RE
 
 .sp
 .RE
 
 .sp