summaryrefslogtreecommitdiff
path: root/ruby.c
diff options
context:
space:
mode:
authorNobuyoshi Nakada <[email protected]>2023-10-04 22:57:56 +0900
committerTakashi Kokubun <[email protected]>2023-10-04 10:25:46 -0700
commit49d27435d01cb5da6c7e344308577089e1a40598 (patch)
treeff9babcdbd8851aac4a7d26e05fcf035c3ffd3c2 /ruby.c
parent582369bb4b33f48a72f64ae12e6d00e30196adef (diff)
Split `show_usage_line` and add `ruby_show_usage_line`
Diffstat (limited to 'ruby.c')
-rw-r--r--ruby.c29
1 files changed, 24 insertions, 5 deletions
diff --git a/ruby.c b/ruby.c
index 2242f45cfa..05e248a1ec 100644
--- a/ruby.c
+++ b/ruby.c
@@ -244,14 +244,12 @@ static const char esc_none[] = "";
#define USAGE_INDENT " " /* macro for concatenation */
static void
-show_usage_line(const struct ruby_opt_message *m,
+show_usage_part(const char *str, const unsigned int namelen,
+ const char *str2, const unsigned int secondlen,
+ const char *desc,
int help, int highlight, unsigned int w, int columns)
{
static const int indent_width = (int)rb_strlen_lit(USAGE_INDENT);
- const char *str = m->str;
- const char *str2 = str + m->namelen;
- const char *desc = str + m->namelen + m->secondlen;
- const unsigned int namelen = m->namelen - 1, secondlen = m->secondlen - 1;
const char *sb = highlight ? esc_bold : esc_none;
const char *se = highlight ? esc_reset : esc_none;
unsigned int desclen = (unsigned int)strcspn(desc, "\n");
@@ -286,6 +284,27 @@ show_usage_line(const struct ruby_opt_message *m,
}
static void
+show_usage_line(const struct ruby_opt_message *m,
+ int help, int highlight, unsigned int w, int columns)
+{
+ const char *str = m->str;
+ const unsigned int namelen = m->namelen, secondlen = m->secondlen;
+ const char *desc = str + namelen + secondlen;
+ show_usage_part(str, namelen - 1, str + namelen, secondlen - 1, desc,
+ help, highlight, w, columns);
+}
+
+void
+ruby_show_usage_line(const char *name, const char *secondary, const char *description,
+ int help, int highlight, unsigned int w, int columns)
+{
+ unsigned int namelen = (unsigned int)strlen(name);
+ unsigned int secondlen = (secondary ? (unsigned int)strlen(secondary) : 0);
+ show_usage_part(name, namelen, secondary, secondlen,
+ description, help, highlight, w, columns);
+}
+
+static void
usage(const char *name, int help, int highlight, int columns)
{
#define M(shortopt, longopt, desc) RUBY_OPT_MESSAGE(shortopt, longopt, desc)