summaryrefslogtreecommitdiff
path: root/sys/src/cmd/aux/usage.c
diff options
context:
space:
mode:
authorkvik <kvik@a-b.xyz>2020-05-07 00:10:09 +0200
committerkvik <kvik@a-b.xyz>2020-05-07 00:10:09 +0200
commitccf5d3fb9db7e58a9b9177f41edaf045b9294f86 (patch)
tree10b775fb9078d2924063a99a54e3efc2ea8b2266 /sys/src/cmd/aux/usage.c
parent0dc9c8d0199db2746f2ca651911e8fa60e90e02f (diff)
aux/getflags: improve flagfmt parser
This makes the flagfmt parser more robust and accepting a looser input language — namely by allowing whitespace around specifier fields and ignoring any empty fields. Long flagfmts can thus be pleasingly displayed: flagfmt=' a, b, c, C:cache, m:mtpt mountpoint, s:srvn srvname'
Diffstat (limited to 'sys/src/cmd/aux/usage.c')
-rw-r--r--sys/src/cmd/aux/usage.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/sys/src/cmd/aux/usage.c b/sys/src/cmd/aux/usage.c
index a2f8c7c2c..fa9d0b1c7 100644
--- a/sys/src/cmd/aux/usage.c
+++ b/sys/src/cmd/aux/usage.c
@@ -1,5 +1,6 @@
#include <u.h>
#include <libc.h>
+#include <ctype.h>
void
main(void)
@@ -30,9 +31,11 @@ main(void)
if(flags[0]){
single = 0;
for(p=flags; *p; ){
+ while(isspace(*p))
+ p++;
p += chartorune(&r, p);
if(*p == ':')
- while(*p != '\0' && *p != ',' && *p != ' ')
+ while(*p && *p != ',' && !isspace(*p))
p++;
if(*p == ',' || *p == 0){
if(!single){
@@ -44,7 +47,7 @@ main(void)
p++;
continue;
}
- while(*p == ' ')
+ while(isspace(*p))
p++;
if(single){
fmtprint(&fmt, "]");