diff options
author | kvik <kvik@a-b.xyz> | 2020-05-07 00:10:09 +0200 |
---|---|---|
committer | kvik <kvik@a-b.xyz> | 2020-05-07 00:10:09 +0200 |
commit | ccf5d3fb9db7e58a9b9177f41edaf045b9294f86 (patch) | |
tree | 10b775fb9078d2924063a99a54e3efc2ea8b2266 /sys/src/cmd/aux/usage.c | |
parent | 0dc9c8d0199db2746f2ca651911e8fa60e90e02f (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.c | 7 |
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, "]"); |