Print this page
NEX-3510 Want "scripted" mode for svcs(1) (fix trailing tab)
NEX-3510 Want "scripted" mode for svcs(1)
Reviewed by: Dan Fields <dan.fields@nexenta.com>
Reviewed by: Hans Rosenfeld <hans.rosenfeld@nexenta.com>
@@ -20,10 +20,11 @@
*/
/*
* Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2011, Joyent, Inc. All rights reserved.
+ * Copyright 2015 Nexenta Systems, Inc. All rights reserved.
* Copyright (c) 2015, 2016 by Delphix. All rights reserved.
*/
/*
* svcs - display attributes of service instances
@@ -144,10 +145,11 @@
/* Options */
static int *opt_columns = NULL; /* Indices into columns to display. */
static int opt_cnum = 0;
static int opt_processes = 0; /* Print processes? */
+static int opt_scripted = 0; /* No header, tabs as separators. */
static int *opt_sort = NULL; /* Indices into columns to sort. */
static int opt_snum = 0;
static int opt_nstate_shown = 0; /* Will nstate be shown? */
static int opt_verbose = 0;
static char *opt_zone; /* zone selected, if any */
@@ -999,21 +1001,48 @@
for (i = 0; i < len; ++i)
buf[i] = ~buf[i];
}
+static void
+sprint_str(char **buf, const char *str, size_t width)
+{
+ char *newbuf;
+ size_t newsz = (*buf != NULL ? strlen(*buf) : 0) + 2;
+
+ if (opt_scripted)
+ newsz += strlen(str);
+ else
+ newsz += width;
+
+ newbuf = safe_malloc(newsz);
+
+ if (opt_scripted) {
+ (void) snprintf(newbuf, newsz, "%s%s%s",
+ *buf != NULL ? *buf : "",
+ *buf != NULL ? "\t" : "",
+ str);
+ } else {
+ (void) snprintf(newbuf, newsz, "%s%-*s ",
+ *buf != NULL ? *buf : "", width, str);
+ }
+
+ free(*buf);
+ *buf = newbuf;
+}
+
/* CTID */
#define CTID_COLUMN_WIDTH 6
#define CTID_COLUMN_BUFSIZE 20 /* max ctid_t + space + \0 */
static void
sprint_ctid(char **buf, scf_walkinfo_t *wip)
{
int r;
uint64_t c;
- size_t newsize = (*buf ? strlen(*buf) : 0) + CTID_COLUMN_BUFSIZE;
- char *newbuf = safe_malloc(newsize);
+ char ctid_buf[CTID_COLUMN_BUFSIZE] = { 0 };
+ char *cstr;
int restarter_spec;
/*
* Use the restarter specific get pids routine, if available.
* Only check for non-legacy services (wip->pg == 0).
@@ -1029,22 +1058,18 @@
r = get_restarter_count_prop(wip->inst,
scf_property_contract, &c, EMPTY_OK | MULTI_OK);
}
}
- if (r == 0)
- (void) snprintf(newbuf, newsize, "%s%*lu ",
- *buf ? *buf : "", CTID_COLUMN_WIDTH, (ctid_t)c);
- else if (r == E2BIG)
- (void) snprintf(newbuf, newsize, "%s%*lu* ",
- *buf ? *buf : "", CTID_COLUMN_WIDTH - 1, (ctid_t)c);
- else
- (void) snprintf(newbuf, newsize, "%s%*s ",
- *buf ? *buf : "", CTID_COLUMN_WIDTH, "-");
- if (*buf)
- free(*buf);
- *buf = newbuf;
+ if (r == 0 || r == E2BIG) {
+ if (r == E2BIG)
+ ctid_buf[CTID_COLUMN_BUFSIZE - 2] = '*';
+ cstr = ulltostr(c, &ctid_buf[CTID_COLUMN_BUFSIZE - 2]);
+ sprint_str(buf, cstr, CTID_COLUMN_WIDTH);
+ } else {
+ sprint_str(buf, "-", CTID_COLUMN_WIDTH);
+ }
}
#define CTID_SORTKEY_WIDTH (sizeof (uint64_t))
static void
@@ -1092,12 +1117,10 @@
static void
sprint_desc(char **buf, scf_walkinfo_t *wip)
{
char *x;
- size_t newsize;
- char *newbuf;
if (common_name_buf == NULL)
common_name_buf = safe_malloc(max_scf_value_length + 1);
bzero(common_name_buf, max_scf_value_length + 1);
@@ -1118,21 +1141,11 @@
*/
for (x = common_name_buf; *x != '\0'; x++)
if (*x == '\n')
*x = ' ';
- if (strlen(common_name_buf) > DESC_COLUMN_WIDTH)
- newsize = (*buf ? strlen(*buf) : 0) +
- strlen(common_name_buf) + 1;
- else
- newsize = (*buf ? strlen(*buf) : 0) + DESC_COLUMN_WIDTH + 1;
- newbuf = safe_malloc(newsize);
- (void) snprintf(newbuf, newsize, "%s%-*s ", *buf ? *buf : "",
- DESC_COLUMN_WIDTH, common_name_buf);
- if (*buf)
- free(*buf);
- *buf = newbuf;
+ sprint_str(buf, common_name_buf, DESC_COLUMN_WIDTH);
}
/* ARGSUSED */
static void
sortkey_desc(char *buf, int reverse, scf_walkinfo_t *wip)
@@ -1218,12 +1231,10 @@
static void
sprint_state(char **buf, scf_walkinfo_t *wip)
{
char state_name[MAX_SCF_STATE_STRING_SZ + 1];
- size_t newsize;
- char *newbuf;
if (wip->pg == NULL) {
get_restarter_string_prop(wip->inst, scf_property_state,
state_name, sizeof (state_name));
@@ -1238,18 +1249,11 @@
(void) strcat(state_name, "*");
}
} else
(void) strcpy(state_name, SCF_STATE_STRING_LEGACY);
- newsize = (*buf ? strlen(*buf) : 0) + MAX_SCF_STATE_STRING_SZ + 2;
- newbuf = safe_malloc(newsize);
- (void) snprintf(newbuf, newsize, "%s%-*s ", *buf ? *buf : "",
- MAX_SCF_STATE_STRING_SZ + 1, state_name);
-
- if (*buf)
- free(*buf);
- *buf = newbuf;
+ sprint_str(buf, state_name, MAX_SCF_STATE_STRING_SZ);
}
static void
sortkey_state(char *buf, int reverse, scf_walkinfo_t *wip)
{
@@ -1257,38 +1261,31 @@
}
static void
sprint_nstate(char **buf, scf_walkinfo_t *wip)
{
- char next_state_name[MAX_SCF_STATE_STRING_SZ];
+ char next_state_name[MAX_SCF_STATE_STRING_SZ + 1];
boolean_t blank = 0;
- size_t newsize;
- char *newbuf;
if (wip->pg == NULL) {
get_restarter_string_prop(wip->inst, scf_property_next_state,
next_state_name, sizeof (next_state_name));
/* Don't print blank fields, to ease parsing. */
if (next_state_name[0] == '\0' ||
strcmp(next_state_name, SCF_STATE_STRING_NONE) == 0)
blank = 1;
- } else
+ } else {
blank = 1;
+ }
if (blank) {
next_state_name[0] = '-';
next_state_name[1] = '\0';
}
- newsize = (*buf ? strlen(*buf) : 0) + MAX_SCF_STATE_STRING_SZ + 1;
- newbuf = safe_malloc(newsize);
- (void) snprintf(newbuf, newsize, "%s%-*s ", *buf ? *buf : "",
- MAX_SCF_STATE_STRING_SZ - 1, next_state_name);
- if (*buf)
- free(*buf);
- *buf = newbuf;
+ sprint_str(buf, next_state_name, MAX_SCF_STATE_STRING_SZ);
}
static void
sortkey_nstate(char *buf, int reverse, scf_walkinfo_t *wip)
{
@@ -1296,14 +1293,12 @@
}
static void
sprint_s(char **buf, scf_walkinfo_t *wip)
{
- char tmp[3];
- char state_name[MAX_SCF_STATE_STRING_SZ];
- size_t newsize = (*buf ? strlen(*buf) : 0) + 4;
- char *newbuf = safe_malloc(newsize);
+ char state_name[MAX_SCF_STATE_STRING_SZ + 1];
+ char tmp[3] = { 0 };
if (wip->pg == NULL) {
get_restarter_string_prop(wip->inst, scf_property_state,
state_name, sizeof (state_name));
tmp[0] = state_to_char(state_name);
@@ -1315,51 +1310,41 @@
} else {
tmp[0] = 'L';
tmp[1] = ' ';
}
tmp[2] = ' ';
- (void) snprintf(newbuf, newsize, "%s%-*s", *buf ? *buf : "",
- 3, tmp);
- if (*buf)
- free(*buf);
- *buf = newbuf;
+
+ sprint_str(buf, tmp, 2);
}
static void
sprint_n(char **buf, scf_walkinfo_t *wip)
{
- char tmp[2];
- size_t newsize = (*buf ? strlen(*buf) : 0) + 3;
- char *newbuf = safe_malloc(newsize);
- char nstate_name[MAX_SCF_STATE_STRING_SZ];
+ char nstate_name[MAX_SCF_STATE_STRING_SZ + 1];
+ char tmp[2] = { 0 };
if (wip->pg == NULL) {
get_restarter_string_prop(wip->inst, scf_property_next_state,
nstate_name, sizeof (nstate_name));
if (strcmp(nstate_name, SCF_STATE_STRING_NONE) == 0)
tmp[0] = '-';
else
tmp[0] = state_to_char(nstate_name);
- } else
+ } else {
tmp[0] = '-';
+ }
- (void) snprintf(newbuf, newsize, "%s%-*s ", *buf ? *buf : "",
- 2, tmp);
- if (*buf)
- free(*buf);
- *buf = newbuf;
+ sprint_str(buf, tmp, 1);
}
static void
sprint_sn(char **buf, scf_walkinfo_t *wip)
{
- char tmp[3];
- size_t newsize = (*buf ? strlen(*buf) : 0) + 4;
- char *newbuf = safe_malloc(newsize);
- char nstate_name[MAX_SCF_STATE_STRING_SZ];
- char state_name[MAX_SCF_STATE_STRING_SZ];
+ char state_name[MAX_SCF_STATE_STRING_SZ + 1];
+ char nstate_name[MAX_SCF_STATE_STRING_SZ + 1];
+ char tmp[3] = { 0 };
if (wip->pg == NULL) {
get_restarter_string_prop(wip->inst, scf_property_state,
state_name, sizeof (state_name));
get_restarter_string_prop(wip->inst, scf_property_next_state,
@@ -1373,16 +1358,11 @@
} else {
tmp[0] = 'L';
tmp[1] = '-';
}
- tmp[2] = ' ';
- (void) snprintf(newbuf, newsize, "%s%-*s ", *buf ? *buf : "",
- 3, tmp);
- if (*buf)
- free(*buf);
- *buf = newbuf;
+ sprint_str(buf, tmp, 2);
}
/* ARGSUSED */
static void
sortkey_sn(char *buf, int reverse, scf_walkinfo_t *wip)
@@ -1413,64 +1393,52 @@
}
static void
sprint_sta(char **buf, scf_walkinfo_t *wip)
{
- char state_name[MAX_SCF_STATE_STRING_SZ];
- char sta[5];
- size_t newsize = (*buf ? strlen(*buf) : 0) + 6;
- char *newbuf = safe_malloc(newsize);
+ char state_name[MAX_SCF_STATE_STRING_SZ + 1];
+ char sta[5] = { 0 };
- if (wip->pg == NULL)
+ if (wip->pg == NULL) {
get_restarter_string_prop(wip->inst, scf_property_state,
state_name, sizeof (state_name));
- else
+ } else {
(void) strcpy(state_name, SCF_STATE_STRING_LEGACY);
+ }
(void) strcpy(sta, state_abbrev(state_name));
if (wip->pg == NULL && !opt_nstate_shown && transitioning(wip->inst))
(void) strcat(sta, "*");
- (void) snprintf(newbuf, newsize, "%s%-4s ", *buf ? *buf : "", sta);
- if (*buf)
- free(*buf);
- *buf = newbuf;
+ sprint_str(buf, sta, 4);
}
static void
sprint_nsta(char **buf, scf_walkinfo_t *wip)
{
- char state_name[MAX_SCF_STATE_STRING_SZ];
- size_t newsize = (*buf ? strlen(*buf) : 0) + 6;
- char *newbuf = safe_malloc(newsize);
+ char state_name[MAX_SCF_STATE_STRING_SZ + 1];
- if (wip->pg == NULL)
+ if (wip->pg == NULL) {
get_restarter_string_prop(wip->inst, scf_property_next_state,
state_name, sizeof (state_name));
- else
+ } else {
(void) strcpy(state_name, SCF_STATE_STRING_NONE);
+ }
if (strcmp(state_name, SCF_STATE_STRING_NONE) == 0)
- (void) snprintf(newbuf, newsize, "%s%-4s ", *buf ? *buf : "",
- "-");
+ sprint_str(buf, "-", 4);
else
- (void) snprintf(newbuf, newsize, "%s%-4s ", *buf ? *buf : "",
- state_abbrev(state_name));
- if (*buf)
- free(*buf);
- *buf = newbuf;
+ sprint_str(buf, state_abbrev(state_name), 4);
}
/* FMRI */
#define FMRI_COLUMN_WIDTH 50
static void
sprint_fmri(char **buf, scf_walkinfo_t *wip)
{
char *fmri_buf = safe_malloc(max_scf_fmri_length + 1);
- size_t newsize;
- char *newbuf;
if (wip->pg == NULL) {
if (scf_instance_to_fmri(wip->inst, fmri_buf,
max_scf_fmri_length + 1) == -1)
scfdie();
@@ -1482,21 +1450,12 @@
max_scf_fmri_length + 1 -
(sizeof (SCF_FMRI_LEGACY_PREFIX) - 1), 0) != 0)
(void) strcat(fmri_buf, LEGACY_UNKNOWN);
}
- if (strlen(fmri_buf) > FMRI_COLUMN_WIDTH)
- newsize = (*buf ? strlen(*buf) : 0) + strlen(fmri_buf) + 2;
- else
- newsize = (*buf ? strlen(*buf) : 0) + FMRI_COLUMN_WIDTH + 2;
- newbuf = safe_malloc(newsize);
- (void) snprintf(newbuf, newsize, "%s%-*s ", *buf ? *buf : "",
- FMRI_COLUMN_WIDTH, fmri_buf);
+ sprint_str(buf, fmri_buf, FMRI_COLUMN_WIDTH);
free(fmri_buf);
- if (*buf)
- free(*buf);
- *buf = newbuf;
}
static void
sortkey_fmri(char *buf, int reverse, scf_walkinfo_t *wip)
{
@@ -1513,23 +1472,17 @@
#define COMPONENT_COLUMN_WIDTH 20
static void
sprint_scope(char **buf, scf_walkinfo_t *wip)
{
char *scope_buf = safe_malloc(max_scf_name_length + 1);
- size_t newsize = (*buf ? strlen(*buf) : 0) + COMPONENT_COLUMN_WIDTH + 2;
- char *newbuf = safe_malloc(newsize);
assert(wip->scope != NULL);
if (scf_scope_get_name(wip->scope, scope_buf, max_scf_name_length) < 0)
scfdie();
- (void) snprintf(newbuf, newsize, "%s%-*s ", *buf ? *buf : "",
- COMPONENT_COLUMN_WIDTH, scope_buf);
- if (*buf)
- free(*buf);
- *buf = newbuf;
+ sprint_str(buf, scope_buf, COMPONENT_COLUMN_WIDTH);
free(scope_buf);
}
static void
sortkey_scope(char *buf, int reverse, scf_walkinfo_t *wip)
@@ -1545,12 +1498,10 @@
static void
sprint_service(char **buf, scf_walkinfo_t *wip)
{
char *svc_buf = safe_malloc(max_scf_name_length + 1);
- char *newbuf;
- size_t newsize;
if (wip->pg == NULL) {
if (scf_service_get_name(wip->svc, svc_buf,
max_scf_name_length + 1) < 0)
scfdie();
@@ -1558,23 +1509,12 @@
if (pg_get_single_val(wip->pg, "name", SCF_TYPE_ASTRING,
svc_buf, max_scf_name_length + 1, EMPTY_OK) != 0)
(void) strcpy(svc_buf, LEGACY_UNKNOWN);
}
-
- if (strlen(svc_buf) > COMPONENT_COLUMN_WIDTH)
- newsize = (*buf ? strlen(*buf) : 0) + strlen(svc_buf) + 2;
- else
- newsize = (*buf ? strlen(*buf) : 0) +
- COMPONENT_COLUMN_WIDTH + 2;
- newbuf = safe_malloc(newsize);
- (void) snprintf(newbuf, newsize, "%s%-*s ", *buf ? *buf : "",
- COMPONENT_COLUMN_WIDTH, svc_buf);
+ sprint_str(buf, svc_buf, COMPONENT_COLUMN_WIDTH);
free(svc_buf);
- if (*buf)
- free(*buf);
- *buf = newbuf;
}
static void
sortkey_service(char *buf, int reverse, scf_walkinfo_t *wip)
{
@@ -1589,29 +1529,24 @@
/* INST */
static void
sprint_instance(char **buf, scf_walkinfo_t *wip)
{
- char *tmp = safe_malloc(max_scf_name_length + 1);
- size_t newsize = (*buf ? strlen(*buf) : 0) + COMPONENT_COLUMN_WIDTH + 2;
- char *newbuf = safe_malloc(newsize);
+ char *inst_buf = safe_malloc(max_scf_name_length + 1);
if (wip->pg == NULL) {
- if (scf_instance_get_name(wip->inst, tmp,
+ if (scf_instance_get_name(wip->inst, inst_buf,
max_scf_name_length + 1) < 0)
scfdie();
} else {
- tmp[0] = '-';
- tmp[1] = '\0';
+ inst_buf[0] = '-';
+ inst_buf[1] = '\0';
}
- (void) snprintf(newbuf, newsize, "%s%-*s ", *buf ? *buf : "",
- COMPONENT_COLUMN_WIDTH, tmp);
- if (*buf)
- free(*buf);
- *buf = newbuf;
- free(tmp);
+
+ sprint_str(buf, inst_buf, COMPONENT_COLUMN_WIDTH);
+ free(inst_buf);
}
static void
sortkey_instance(char *buf, int reverse, scf_walkinfo_t *wip)
{
@@ -1625,12 +1560,12 @@
}
/* STIME */
#define STIME_COLUMN_WIDTH 8
#define FORMAT_TIME "%k:%M:%S"
-#define FORMAT_DATE "%b_%d "
-#define FORMAT_YEAR "%Y "
+#define FORMAT_DATE "%b_%d"
+#define FORMAT_YEAR "%Y"
/*
* sprint_stime() will allocate a new buffer and snprintf the services's
* state timestamp. If the timestamp is unavailable for some reason
* a '-' is given instead.
@@ -1641,12 +1576,10 @@
int r;
struct timeval tv;
time_t then;
struct tm *tm;
char st_buf[STIME_COLUMN_WIDTH + 1];
- size_t newsize = (*buf ? strlen(*buf) : 0) + STIME_COLUMN_WIDTH + 2;
- char *newbuf = safe_malloc(newsize);
if (wip->pg == NULL) {
r = get_restarter_time_prop(wip->inst,
SCF_PROPERTY_STATE_TIMESTAMP, &tv, 0);
} else {
@@ -1657,12 +1590,11 @@
if (r != 0) {
/*
* There's something amiss with our service
* so we'll print a '-' for STIME.
*/
- (void) snprintf(newbuf, newsize, "%s%-*s", *buf ? *buf : "",
- STIME_COLUMN_WIDTH + 1, "-");
+ sprint_str(buf, "-", STIME_COLUMN_WIDTH);
} else {
/* tv should be valid so we'll format it */
then = (time_t)tv.tv_sec;
tm = localtime(&then);
@@ -1679,16 +1611,12 @@
gettext(FORMAT_DATE), tm);
} else {
(void) strftime(st_buf, sizeof (st_buf),
gettext(FORMAT_YEAR), tm);
}
- (void) snprintf(newbuf, newsize, "%s%-*s ", *buf ? *buf : "",
- STIME_COLUMN_WIDTH + 1, st_buf);
+ sprint_str(buf, st_buf, STIME_COLUMN_WIDTH);
}
- if (*buf)
- free(*buf);
- *buf = newbuf;
}
#define STIME_SORTKEY_WIDTH (sizeof (uint64_t) + sizeof (uint32_t))
/* ARGSUSED */
@@ -1729,12 +1657,11 @@
#define ZONE_COLUMN_WIDTH 16
/*ARGSUSED*/
static void
sprint_zone(char **buf, scf_walkinfo_t *wip)
{
- size_t newsize;
- char *newbuf, *zonename = g_zonename, b[ZONENAME_MAX];
+ char *zonename = g_zonename, b[ZONENAME_MAX];
if (zonename == NULL) {
zoneid_t zoneid = getzoneid();
if (getzonenamebyid(zoneid, b, sizeof (b)) < 0)
@@ -1741,22 +1668,11 @@
uu_die(gettext("could not determine zone name"));
zonename = b;
}
- if (strlen(zonename) > ZONE_COLUMN_WIDTH)
- newsize = (*buf ? strlen(*buf) : 0) + strlen(zonename) + 2;
- else
- newsize = (*buf ? strlen(*buf) : 0) + ZONE_COLUMN_WIDTH + 2;
-
- newbuf = safe_malloc(newsize);
- (void) snprintf(newbuf, newsize, "%s%-*s ", *buf ? *buf : "",
- ZONE_COLUMN_WIDTH, zonename);
-
- if (*buf)
- free(*buf);
- *buf = newbuf;
+ sprint_str(buf, zonename, ZONE_COLUMN_WIDTH);
}
static void
sortkey_zone(char *buf, int reverse, scf_walkinfo_t *wip)
{
@@ -1782,20 +1698,20 @@
FMRI_COLUMN_WIDTH, sortkey_fmri },
{ "INST", COMPONENT_COLUMN_WIDTH, sprint_instance,
COMPONENT_COLUMN_WIDTH, sortkey_instance },
{ "N", 1, sprint_n, 1, sortkey_nstate },
{ "NSTA", 4, sprint_nsta, 1, sortkey_nstate },
- { "NSTATE", MAX_SCF_STATE_STRING_SZ - 1, sprint_nstate,
+ { "NSTATE", MAX_SCF_STATE_STRING_SZ, sprint_nstate,
1, sortkey_nstate },
{ "S", 2, sprint_s, 1, sortkey_state },
{ "SCOPE", COMPONENT_COLUMN_WIDTH, sprint_scope,
COMPONENT_COLUMN_WIDTH, sortkey_scope },
{ "SN", 2, sprint_sn, 2, sortkey_sn },
{ "SVC", COMPONENT_COLUMN_WIDTH, sprint_service,
COMPONENT_COLUMN_WIDTH, sortkey_service },
{ "STA", 4, sprint_sta, 1, sortkey_state },
- { "STATE", MAX_SCF_STATE_STRING_SZ - 1 + 1, sprint_state,
+ { "STATE", MAX_SCF_STATE_STRING_SZ, sprint_state,
1, sortkey_state },
{ "STIME", STIME_COLUMN_WIDTH, sprint_stime,
STIME_SORTKEY_WIDTH, sortkey_stime },
{ "ZONE", ZONE_COLUMN_WIDTH, sprint_zone,
ZONE_COLUMN_WIDTH, sortkey_zone },
@@ -1867,18 +1783,17 @@
static void
print_usage(const char *progname, FILE *f, boolean_t do_exit)
{
- (void) fprintf(f, gettext(
- "Usage: %1$s [-aHpv] [-o col[,col ... ]] [-R restarter] "
- "[-sS col] [-Z | -z zone ]\n [<service> ...]\n"
- " %1$s -d | -D [-Hpv] [-o col[,col ... ]] [-sS col] "
- "[-Z | -z zone ]\n [<service> ...]\n"
- " %1$s [-l | -L] [-Z | -z zone] <service> ...\n"
- " %1$s -x [-v] [-Z | -z zone] [<service> ...]\n"
- " %1$s -?\n"), progname);
+ (void) fprintf(f, gettext("usage:\n"
+ "%1$s\t[-aHpv?] [-o col[,col]...] [-R FMRI-instance]... "
+ "[-sS col]...\n\t[-z zone|-Z] [FMRI|pattern]...\n"
+ "%1$s\t{-d|-D} -Hpv? [-o col[,col]...] [-sS col]... [-z zone|-Z]\n"
+ "\t[FMRI|pattern]...\n"
+ "%1$s\t{-l|-L} [-v] [-z zone|-Z] {FMRI|pattern}...\n"
+ "%1$s\t-x [-v] [-z zone|-Z] [FMRI]...\n"), progname);
if (do_exit)
exit(UU_EXIT_USAGE);
}
@@ -3452,11 +3367,10 @@
zoneid_t *zids = NULL;
char zonename[ZONENAME_MAX];
void (*errfunc)(const char *, ...);
int show_all = 0;
- int show_header = 1;
int show_zones = 0;
const char * const options = "aHpvno:R:s:S:dDlL?xZz:";
(void) setlocale(LC_ALL, "");
@@ -3542,11 +3456,11 @@
break;
case 'H':
if (opt_mode == 'l' || opt_mode == 'x')
argserr(progname);
- show_header = 0;
+ opt_scripted = 1;
break;
case 'p':
if (opt_mode == 'x')
argserr(progname);
@@ -3921,11 +3835,11 @@
exit_status = missing;
if (opt_columns == NULL)
return (exit_status);
- if (show_header)
+ if (!opt_scripted)
print_header();
(void) uu_avl_walk(lines, print_line, NULL, 0);
return (exit_status);