diff options
author | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2023-06-05 10:09:23 +0900 |
---|---|---|
committer | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2023-06-05 23:59:39 +0900 |
commit | b5467ae38a5170d85d19499f18ea351c479bc414 (patch) | |
tree | 0aaf316a92ec047cdfb476a89b4ed9a27d4b90c4 /ruby.c | |
parent | feb946c3e2a8aac09ceda2aa7d5d605d6bcedf96 (diff) |
Add additional info for `-0` to `--help` message
Notes
Notes:
Merged: https://github.com/ruby/ruby/pull/7906
Diffstat (limited to 'ruby.c')
-rw-r--r-- | ruby.c | 30 |
1 files changed, 20 insertions, 10 deletions
@@ -245,6 +245,8 @@ show_usage_line(const struct ruby_opt_message *m, const unsigned int namelen = m->namelen, secondlen = m->secondlen; const char *sb = highlight ? esc_bold : esc_none; const char *se = highlight ? esc_reset : esc_none; + const char *desc = str + namelen + secondlen; + unsigned int desclen = (unsigned int)strcspn(desc, "\n"); if (help && (namelen > w) && (int)(namelen + secondlen) >= columns) { printf(" %s" "%.*s" "%s\n", sb, namelen-1, str, se); if (secondlen > 1) { @@ -254,16 +256,23 @@ show_usage_line(const struct ruby_opt_message *m, if (str[n] == ' ') n++; printf(" %s" "%.*s" "%s\n", sb, second_end-n, str+n, se); } - printf("%-*s%s\n", w + 2, "", - str + namelen + secondlen); - return; + printf("%-*s%.*s\n", w + 2, "", desclen, desc); + } + else { + const int wrap = help && namelen + secondlen - 1 > w; + printf(" %s%.*s%-*.*s%s%-*s%.*s\n", sb, namelen-1, str, + (wrap ? 0 : w - namelen + 1), + (help ? secondlen-1 : 0), str + namelen, se, + (wrap ? w + 3 : 0), (wrap ? "\n" : ""), + desclen, desc); + } + if (help) { + while (desc[desclen]) { + desc += desclen + 1; + desclen = (unsigned int)strcspn(desc, "\n"); + printf("%-*s%.*s\n", w + 2, "", desclen, desc); + } } - const int wrap = help && namelen + secondlen - 1 > w; - printf(" %s%.*s%-*.*s%s%-*s%s\n", sb, namelen-1, str, - (wrap ? 0 : w - namelen + 1), - (help ? secondlen-1 : 0), str + namelen, se, - (wrap ? w + 3 : 0), (wrap ? "\n" : ""), - str + namelen + secondlen); } static void @@ -280,7 +289,8 @@ usage(const char *name, int help, int highlight, int columns) /* This message really ought to be max 23 lines. * Removed -h because the user already knows that option. Others? */ static const struct ruby_opt_message usage_msg[] = { - M("-0[octal]", "", "specify record separator (\\0, if no argument)"), + M("-0[octal]", "", "specify record separator (\\0, if no argument)\n" + "(-00 for paragraph mode, -0777 for slurp mode)"), M("-a", "", "autosplit mode with -n or -p (splits $_ into $F)"), M("-c", "", "check syntax only"), M("-Cdirectory", "", "cd to directory before executing your script"), |