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:
Juli Mallett 2002-06-08 18:11:52 +00:00
parent e8d0276426
commit 2dda9fe910
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=98050
2 changed files with 14 additions and 5 deletions

View File

@ -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)

View File

@ -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.