diff options
author | midipix <writeonce@midipix.org> | 2024-05-28 14:55:48 +0000 |
---|---|---|
committer | midipix <writeonce@midipix.org> | 2024-05-28 15:07:41 +0000 |
commit | 98f58c4f4a7c3f39b49b79b5b4310334c9a8e978 (patch) | |
tree | 1975785f7de4a9c49efa30df1dfc14a6dbec1b72 /src/internal/argv | |
parent | 963fc8dcd91778fbac25c6400c968cb9bc032106 (diff) | |
download | mdso-98f58c4f4a7c3f39b49b79b5b4310334c9a8e978.tar.bz2 mdso-98f58c4f4a7c3f39b49b79b5b4310334c9a8e978.tar.xz |
argv.h: usage screen: avoid extra <stace> when all long options are hybrid-only.
Diffstat (limited to 'src/internal/argv')
-rw-r--r-- | src/internal/argv/argv.h | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/src/internal/argv/argv.h b/src/internal/argv/argv.h index e33211d..b50e9c7 100644 --- a/src/internal/argv/argv.h +++ b/src/internal/argv/argv.h @@ -833,6 +833,7 @@ static void argv_usage_impl( { const struct argv_option ** optv; const struct argv_option * option; + int nlong; bool fshort,flong,fboth; size_t len,optlen,desclen; char cache; @@ -865,7 +866,7 @@ static void argv_usage_impl( if (header) argv_dprintf(fd,"%s",header); - for (optlen=0,optv=options; *optv; optv++) { + for (optlen=0,nlong=0,optv=options; *optv; optv++) { option = *optv; /* indent + comma */ @@ -884,6 +885,11 @@ static void argv_usage_impl( /* optlen */ if (len > optlen) optlen = len; + + /* long (vs. hybrid-only) option? */ + if (option->long_name) + if (!(option->flags & ARGV_OPTION_HYBRID_ONLY)) + nlong++; } if (optlen >= optcap) { @@ -918,6 +924,10 @@ static void argv_usage_impl( prefix = option->flags & ARGV_OPTION_HYBRID_ONLY ? " -" : " --"; + /* avoid extra <stace> when all long opts are hybrid-only */ + if (nlong == 0) + prefix++; + /* option string */ if (fboth && option->short_name && option->long_name) sprintf(optstr,"%s-%c,%s%s", |