Fix 'zpool events' formatting for awk

To make the 'zpool events' output simple to parse with awk the extra
newline after embedded nvlists has been dropped.  This allows the
entire event to be parsed as a single whitespace seperated record.

The -H option has been added to operate in scripted mode.  For the
'zpool events' command this means don't print the header.  The usage
of -H is consistent with scripted mode for other zpool commands.
This commit is contained in:
Brian Behlendorf 2010-09-28 16:30:54 -07:00
parent 312c07edfd
commit c5343ba71b

View File

@ -241,7 +241,7 @@ get_usage(zpool_help_t idx) {
"\tupgrade -v\n" "\tupgrade -v\n"
"\tupgrade [-V version] <-a | pool ...>\n")); "\tupgrade [-V version] <-a | pool ...>\n"));
case HELP_EVENTS: case HELP_EVENTS:
return (gettext("\tevents [-vfc]\n")); return (gettext("\tevents [-vHfc]\n"));
case HELP_GET: case HELP_GET:
return (gettext("\tget <\"all\" | property[,...]> " return (gettext("\tget <\"all\" | property[,...]> "
"<pool> ...\n")); "<pool> ...\n"));
@ -4228,6 +4228,7 @@ zpool_do_history(int argc, char **argv)
typedef struct ev_opts { typedef struct ev_opts {
int verbose; int verbose;
int scripted;
int follow; int follow;
int clear; int clear;
} ev_opts_t; } ev_opts_t;
@ -4342,7 +4343,7 @@ zpool_do_events_nvprint(nvlist_t *nvl, int depth)
printf(gettext("(embedded nvlist)\n")); printf(gettext("(embedded nvlist)\n"));
(void) nvpair_value_nvlist(nvp, &cnv); (void) nvpair_value_nvlist(nvp, &cnv);
zpool_do_events_nvprint(cnv, depth + 8); zpool_do_events_nvprint(cnv, depth + 8);
printf(gettext("%*s(end %s)\n"), depth, "", name); printf(gettext("%*s(end %s)"), depth, "", name);
break; break;
case DATA_TYPE_NVLIST_ARRAY: { case DATA_TYPE_NVLIST_ARRAY: {
@ -4472,7 +4473,8 @@ zpool_do_events_next(ev_opts_t *opts)
cleanup_fd = open(ZFS_DEV, O_RDWR); cleanup_fd = open(ZFS_DEV, O_RDWR);
VERIFY(cleanup_fd >= 0); VERIFY(cleanup_fd >= 0);
(void) printf(gettext("%-30s %s\n"), "TIME", "CLASS"); if (!opts->scripted)
(void) printf(gettext("%-30s %s\n"), "TIME", "CLASS");
while (1) { while (1) {
ret = zpool_events_next(g_zfs, &nvl, &dropped, ret = zpool_events_next(g_zfs, &nvl, &dropped,
@ -4523,11 +4525,14 @@ zpool_do_events(int argc, char **argv)
int c; int c;
/* check options */ /* check options */
while ((c = getopt(argc, argv, "vfc")) != -1) { while ((c = getopt(argc, argv, "vHfc")) != -1) {
switch (c) { switch (c) {
case 'v': case 'v':
opts.verbose = 1; opts.verbose = 1;
break; break;
case 'H':
opts.scripted = 1;
break;
case 'f': case 'f':
opts.follow = 1; opts.follow = 1;
break; break;