X-Git-Url: http://git.ozlabs.org/?a=blobdiff_plain;f=ccan%2Fopt%2Fusage.c;h=4ed279197fe808ac391d39a93df1dbb9e8b14126;hb=4bfa8587c9b7c8450320232837c6481d07ce77f6;hp=26150ea8cd409e6c84d5a33067fd15932bccb4dc;hpb=c7a7fc0a1771394534cafaa7c30aa215631efc82;p=ccan diff --git a/ccan/opt/usage.c b/ccan/opt/usage.c index 26150ea8..4ed27919 100644 --- a/ccan/opt/usage.c +++ b/ccan/opt/usage.c @@ -4,7 +4,9 @@ #include #include /* Required on Solaris for struct winsize */ #endif +#if HAVE_SYS_UNISTD_H #include /* Required on Solaris for ioctl */ +#endif #include #include #include @@ -70,7 +72,8 @@ static size_t consume_words(const char *words, size_t maxlen, size_t *prefix, } } - *start = (words[oldlen - 1] == '\n'); + if (oldlen != 0) + *start = (words[oldlen - 1] == '\n'); return oldlen; } @@ -108,7 +111,7 @@ static char *add_desc(char *base, size_t *len, size_t *max, base = add_str(base, len, max, opt->names); off = strlen(opt->names); - if (opt->type == OPT_HASARG + if ((opt->type & OPT_HASARG) && !strchr(opt->names, ' ') && !strchr(opt->names, '=')) { base = add_str(base, len, max, " "); @@ -179,10 +182,10 @@ char *opt_usage(const char *argv0, const char *extra) size_t l; if (opt_table[i].desc == opt_hidden) continue; - if (opt_table[i].type == OPT_SUBTABLE) + if (opt_table[i].type & OPT_SUBTABLE) continue; l = strlen(opt_table[i].names); - if (opt_table[i].type == OPT_HASARG + if ((opt_table[i].type & OPT_HASARG) && !strchr(opt_table[i].names, ' ') && !strchr(opt_table[i].names, '=')) l += strlen(" "); @@ -218,7 +221,7 @@ char *opt_usage(const char *argv0, const char *extra) for (i = 0; i < opt_count; i++) { if (opt_table[i].desc == opt_hidden) continue; - if (opt_table[i].type == OPT_SUBTABLE) { + if (opt_table[i].type & OPT_SUBTABLE) { ret = add_str(ret, &len, &max, opt_table[i].desc); ret = add_str(ret, &len, &max, ":\n"); continue;