mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* ruby.c: revert r37298.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37816 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
d53204f910
commit
10cceae9e3
2 changed files with 36 additions and 73 deletions
|
@ -1,3 +1,7 @@
|
||||||
|
Fri Nov 23 12:33:01 2012 Tadayoshi Funaba <tadf@dotrb.org>
|
||||||
|
|
||||||
|
* ruby.c: revert r37298.
|
||||||
|
|
||||||
Fri Nov 23 11:40:13 2012 Tadayoshi Funaba <tadf@dotrb.org>
|
Fri Nov 23 11:40:13 2012 Tadayoshi Funaba <tadf@dotrb.org>
|
||||||
|
|
||||||
* test/ruby/test_rubyoptions.rb (TestRubyOptions#test_usage2):
|
* test/ruby/test_rubyoptions.rb (TestRubyOptions#test_usage2):
|
||||||
|
|
105
ruby.c
105
ruby.c
|
@ -52,14 +52,6 @@
|
||||||
char *getenv();
|
char *getenv();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define numberof(array) (int)(sizeof(array) / sizeof((array)[0]))
|
|
||||||
|
|
||||||
#if defined DISABLE_RUBYGEMS && DISABLE_RUBYGEMS
|
|
||||||
#define DEFAULT_RUBYGEMS_ENABLED "disabled"
|
|
||||||
#else
|
|
||||||
#define DEFAULT_RUBYGEMS_ENABLED "enabled"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define DISABLE_BIT(bit) (1U << disable_##bit)
|
#define DISABLE_BIT(bit) (1U << disable_##bit)
|
||||||
enum disable_flag_bits {
|
enum disable_flag_bits {
|
||||||
disable_gems,
|
disable_gems,
|
||||||
|
@ -73,7 +65,6 @@ enum dump_flag_bits {
|
||||||
dump_version_v,
|
dump_version_v,
|
||||||
dump_copyright,
|
dump_copyright,
|
||||||
dump_usage,
|
dump_usage,
|
||||||
dump_help,
|
|
||||||
dump_yydebug,
|
dump_yydebug,
|
||||||
dump_syntax,
|
dump_syntax,
|
||||||
dump_parsetree,
|
dump_parsetree,
|
||||||
|
@ -132,73 +123,42 @@ static struct {
|
||||||
} origarg;
|
} origarg;
|
||||||
|
|
||||||
static void
|
static void
|
||||||
usage(const char *name, int help)
|
usage(const char *name)
|
||||||
{
|
{
|
||||||
/* This message really ought to be max 23 lines.
|
/* This message really ought to be max 23 lines.
|
||||||
* Removed -h because the user already knows that option. Others? */
|
* Removed -h because the user already knows that option. Others? */
|
||||||
|
|
||||||
struct message {
|
static const char *const usage_msg[] = {
|
||||||
const char *str;
|
"-0[octal] specify record separator (\\0, if no argument)",
|
||||||
unsigned short namelen, secondlen;
|
"-a autosplit mode with -n or -p (splits $_ into $F)",
|
||||||
|
"-c check syntax only",
|
||||||
|
"-Cdirectory cd to directory, before executing your script",
|
||||||
|
"-d set debugging flags (set $DEBUG to true)",
|
||||||
|
"-e 'command' one line of script. Several -e's allowed. Omit [programfile]",
|
||||||
|
"-Eex[:in] specify the default external and internal character encodings",
|
||||||
|
"-Fpattern split() pattern for autosplit (-a)",
|
||||||
|
"-i[extension] edit ARGV files in place (make backup if extension supplied)",
|
||||||
|
"-Idirectory specify $LOAD_PATH directory (may be used more than once)",
|
||||||
|
"-l enable line ending processing",
|
||||||
|
"-n assume 'while gets(); ... end' loop around your script",
|
||||||
|
"-p assume loop like -n but print line also like sed",
|
||||||
|
"-rlibrary require the library, before executing your script",
|
||||||
|
"-s enable some switch parsing for switches after script name",
|
||||||
|
"-S look for the script using PATH environment variable",
|
||||||
|
"-T[level=1] turn on tainting checks",
|
||||||
|
"-v print version number, then turn on verbose mode",
|
||||||
|
"-w turn warnings on for your script",
|
||||||
|
"-W[level=2] set warning level; 0=silence, 1=medium, 2=verbose",
|
||||||
|
"-x[directory] strip off text before #!ruby line and perhaps cd to directory",
|
||||||
|
"--copyright print the copyright",
|
||||||
|
"--version print the version",
|
||||||
|
NULL
|
||||||
};
|
};
|
||||||
#define M(shortopt, longopt, desc) { \
|
const char *const *p = usage_msg;
|
||||||
shortopt " " longopt " " desc, \
|
|
||||||
(unsigned short)sizeof(shortopt), \
|
|
||||||
(unsigned short)sizeof(longopt), \
|
|
||||||
}
|
|
||||||
static const struct message usage_msg[] = {
|
|
||||||
M("-0[octal]", "", "specify record separator (\\0, if no argument)"),
|
|
||||||
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"),
|
|
||||||
M("-d", ", --debug", "set debugging flags (set $DEBUG to true)"),
|
|
||||||
M("-e 'command'", "", "one line of script. Several -e's allowed. Omit [programfile]"),
|
|
||||||
M("-Eex[:in]", ", --encoding=ex[:in]", "specify the default external and internal character encodings"),
|
|
||||||
M("-Fpattern", "", "split() pattern for autosplit (-a)"),
|
|
||||||
M("-i[extension]", "", "edit ARGV files in place (make backup if extension supplied)"),
|
|
||||||
M("-Idirectory", "", "specify $LOAD_PATH directory (may be used more than once)"),
|
|
||||||
M("-l", "", "enable line ending processing"),
|
|
||||||
M("-n", "", "assume 'while gets(); ... end' loop around your script"),
|
|
||||||
M("-p", "", "assume loop like -n but print line also like sed"),
|
|
||||||
M("-rlibrary", "", "require the library before executing your script"),
|
|
||||||
M("-s", "", "enable some switch parsing for switches after script name"),
|
|
||||||
M("-S", "", "look for the script using PATH environment variable"),
|
|
||||||
M("-T[level=1]", "", "turn on tainting checks"),
|
|
||||||
M("-v", ", --verbose", "print version number, then turn on verbose mode"),
|
|
||||||
M("-w", "", "turn warnings on for your script"),
|
|
||||||
M("-W[level=2]", "", "set warning level; 0=silence, 1=medium, 2=verbose"),
|
|
||||||
M("-x[directory]", "", "strip off text before #!ruby line and perhaps cd to directory"),
|
|
||||||
M("-h", "", "show this message, --help for more info"),
|
|
||||||
};
|
|
||||||
static const struct message help_msg[] = {
|
|
||||||
M("--copyright", "", "print the copyright"),
|
|
||||||
M("--enable=feature[,...]", "", "enable features"),
|
|
||||||
M("--disable=feature[,...]", "", "disable features"),
|
|
||||||
M("--internal-encoding=encoding", "", "specify the default internal character encoding"),
|
|
||||||
M("--external-encoding=encoding", "", "specify the default external character encoding"),
|
|
||||||
M("--version", "", "print the version"),
|
|
||||||
M("--help", "", "show this message, -h for short message"),
|
|
||||||
};
|
|
||||||
static const struct message features[] = {
|
|
||||||
M("gems", "", "rubygems (default: "DEFAULT_RUBYGEMS_ENABLED")"),
|
|
||||||
M("rubyopt", "", "RUBYOPT environment variable (default: enabled)"),
|
|
||||||
};
|
|
||||||
int i, w = help ? 32 : 16, num = numberof(usage_msg) - (help ? 1 : 0);
|
|
||||||
#define SHOW(m) printf(" %.*s%-*.*s%s\n", (m).namelen-1, (m).str, \
|
|
||||||
w - (m).namelen + 1, (help ? (m).secondlen-1 : 0), (m).str + (m).namelen, \
|
|
||||||
(m).str + (m).namelen + (m).secondlen)
|
|
||||||
|
|
||||||
printf("Usage: %s [switches] [--] [programfile] [arguments]\n", name);
|
printf("Usage: %s [switches] [--] [programfile] [arguments]\n", name);
|
||||||
for (i = 0; i < num; ++i)
|
while (*p)
|
||||||
SHOW(usage_msg[i]);
|
printf(" %s\n", *p++);
|
||||||
|
|
||||||
if (!help) return;
|
|
||||||
|
|
||||||
for (i = 0; i < numberof(help_msg); ++i)
|
|
||||||
SHOW(help_msg[i]);
|
|
||||||
puts("Features:");
|
|
||||||
for (i = 0; i < numberof(features); ++i)
|
|
||||||
SHOW(features[i]);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef MANGLED_PATH
|
#ifdef MANGLED_PATH
|
||||||
|
@ -726,7 +686,6 @@ dump_option(const char *str, int len, void *arg)
|
||||||
SET_WHEN_DUMP(version);
|
SET_WHEN_DUMP(version);
|
||||||
SET_WHEN_DUMP(copyright);
|
SET_WHEN_DUMP(copyright);
|
||||||
SET_WHEN_DUMP(usage);
|
SET_WHEN_DUMP(usage);
|
||||||
SET_WHEN_DUMP(help);
|
|
||||||
SET_WHEN_DUMP(yydebug);
|
SET_WHEN_DUMP(yydebug);
|
||||||
SET_WHEN_DUMP(syntax);
|
SET_WHEN_DUMP(syntax);
|
||||||
SET_WHEN_DUMP(parsetree);
|
SET_WHEN_DUMP(parsetree);
|
||||||
|
@ -1111,7 +1070,7 @@ proc_options(long argc, char **argv, struct cmdline_options *opt, int envopt)
|
||||||
}
|
}
|
||||||
else if (strcmp("help", s) == 0) {
|
else if (strcmp("help", s) == 0) {
|
||||||
if (envopt) goto noenvopt_long;
|
if (envopt) goto noenvopt_long;
|
||||||
opt->dump |= DUMP_BIT(help);
|
opt->dump |= DUMP_BIT(usage);
|
||||||
goto switch_end;
|
goto switch_end;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@ -1308,8 +1267,8 @@ process_options(int argc, char **argv, struct cmdline_options *opt)
|
||||||
argc -= i;
|
argc -= i;
|
||||||
argv += i;
|
argv += i;
|
||||||
|
|
||||||
if (opt->dump & (DUMP_BIT(usage)|DUMP_BIT(help))) {
|
if (opt->dump & DUMP_BIT(usage)) {
|
||||||
usage(origarg.argv[0], (opt->dump & DUMP_BIT(help)));
|
usage(origarg.argv[0]);
|
||||||
return Qtrue;
|
return Qtrue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue