summaryrefslogtreecommitdiffstats
path: root/bin/ps/keyword.c
diff options
context:
space:
mode:
authorjmallett <jmallett@FreeBSD.org>2002-06-08 18:11:52 +0000
committerjmallett <jmallett@FreeBSD.org>2002-06-08 18:11:52 +0000
commitef26e821fbc754fe3feb2d5003839df34f51d353 (patch)
tree3bebaf3d611884556818aa1597fd122d74ad370a /bin/ps/keyword.c
parent82e04d4006b123c1ae720bee4f37d972c50b335a (diff)
downloadFreeBSD-src-ef26e821fbc754fe3feb2d5003839df34f51d353.zip
FreeBSD-src-ef26e821fbc754fe3feb2d5003839df34f51d353.tar.gz
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
Diffstat (limited to 'bin/ps/keyword.c')
-rw-r--r--bin/ps/keyword.c15
1 files changed, 12 insertions, 3 deletions
diff --git a/bin/ps/keyword.c b/bin/ps/keyword.c
index 17cdc78..e27a09d 100644
--- a/bin/ps/keyword.c
+++ b/bin/ps/keyword.c
@@ -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)
OpenPOWER on IntegriCloud