Allow whitespace to act as a delimiter in the keywords list given to the -o,
again, but also allow it in the user-specified header, too. This is far more backwards compatible and SUSv3-happy than allowing only comma to seperate the keywords list. Submitted by: tjr
This commit is contained in:
parent
e8d0276426
commit
2dda9fe910
|
@ -240,6 +240,7 @@ parsefmt(const char *p)
|
|||
static struct varent *vtail;
|
||||
char *tempstr, *tempstr1;
|
||||
|
||||
#define FMTSEP " \t,\n"
|
||||
tempstr1 = tempstr = strdup(p);
|
||||
while (tempstr && *tempstr) {
|
||||
char *cp;
|
||||
|
@ -247,10 +248,18 @@ parsefmt(const char *p)
|
|||
struct varent *vent;
|
||||
|
||||
/*
|
||||
* Seperate the format by commas.
|
||||
* If an item contains an equals sign, it specifies a column
|
||||
* header, may contain embedded separator characters and
|
||||
* is always the last item.
|
||||
*/
|
||||
while ((cp = strsep(&tempstr, ",")) != NULL && *cp == '\0')
|
||||
/* void */;
|
||||
if (tempstr[strcspn(tempstr, "="FMTSEP)] != '=')
|
||||
while ((cp = strsep(&tempstr, FMTSEP)) != NULL &&
|
||||
*cp == '\0')
|
||||
/* void */;
|
||||
else {
|
||||
cp = tempstr;
|
||||
tempstr = NULL;
|
||||
}
|
||||
if (cp == NULL || !(v = findvar(cp)))
|
||||
continue;
|
||||
if ((vent = malloc(sizeof(struct varent))) == NULL)
|
||||
|
|
|
@ -130,8 +130,8 @@ Keywords may be appended with an equals (``='') sign and a string.
|
|||
This causes the printed header to use the specified string instead of
|
||||
the standard header.
|
||||
.It Fl o
|
||||
Display information associated with the comma separated list of keywords
|
||||
specified.
|
||||
Display information associated with the space or comma separated
|
||||
list of keywords specified.
|
||||
Multiple keywords may also be given in the form of more than one
|
||||
.Fl o
|
||||
option.
|
||||
|
|
Loading…
Reference in New Issue