X-Git-Url: http://git.ozlabs.org/?p=ccan;a=blobdiff_plain;f=ccan%2Fopt%2Fusage.c;h=4d784bc2be73550a5b9818a31a245eafbc56adf7;hp=b7381bc7378c6673c742d6dc23b0c42f211e8265;hb=8fc7a90a8db345c4276419d11f8731afc63f65f5;hpb=be6a5cdadeef4995cc935f2d2443f45f542ed125 diff --git a/ccan/opt/usage.c b/ccan/opt/usage.c index b7381bc7..4d784bc2 100644 --- a/ccan/opt/usage.c +++ b/ccan/opt/usage.c @@ -28,6 +28,17 @@ char *opt_usage(const char *argv0, const char *extra) unsigned int i, num, len; char *ret, *p; + if (!extra) { + extra = ""; + for (i = 0; i < opt_count; i++) { + if (opt_table[i].cb == (void *)opt_usage_and_exit + && opt_table[i].u.carg) { + extra = opt_table[i].u.carg; + break; + } + } + } + /* An overestimate of our length. */ len = strlen("Usage: %s ") + strlen(argv0) + strlen("[-%.*s]") + opt_num_short + 1 @@ -82,14 +93,14 @@ char *opt_usage(const char *argv0, const char *extra) len += sprintf(p + len, " "); len += sprintf(p + len, "%.*s", len < strlen(OPT_SPACE_PAD) - ? strlen(OPT_SPACE_PAD) - len : 1, + ? (unsigned)strlen(OPT_SPACE_PAD) - len : 1, OPT_SPACE_PAD); len += sprintf(p + len, "%s", opt_table[i].desc); if (opt_table[i].show) { char buf[OPT_SHOW_LEN + sizeof("...")]; strcpy(buf + OPT_SHOW_LEN, "..."); - opt_table[i].show(buf, opt_table[i].arg); + opt_table[i].show(buf, opt_table[i].u.arg); len += sprintf(p + len, " (default: %s)", buf); } p += len;