aboutsummaryrefslogtreecommitdiffstats
path: root/ruby.c
diff options
context:
space:
mode:
authorNobuyoshi Nakada <nobu@ruby-lang.org>2023-06-05 10:09:23 +0900
committerNobuyoshi Nakada <nobu@ruby-lang.org>2023-06-05 23:59:39 +0900
commitb5467ae38a5170d85d19499f18ea351c479bc414 (patch)
tree0aaf316a92ec047cdfb476a89b4ed9a27d4b90c4 /ruby.c
parentfeb946c3e2a8aac09ceda2aa7d5d605d6bcedf96 (diff)
downloadruby-b5467ae38a5170d85d19499f18ea351c479bc414.tar.gz
Add additional info for `-0` to `--help` message
Diffstat (limited to 'ruby.c')
-rw-r--r--ruby.c30
1 files changed, 20 insertions, 10 deletions
diff --git a/ruby.c b/ruby.c
index 1be5b29d09..7b233e4106 100644
--- a/ruby.c
+++ b/ruby.c
@@ -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"),