1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@867 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
matz 2000-08-01 09:25:37 +00:00
parent 65cdbd0667
commit d3a6170010
6 changed files with 89 additions and 49 deletions

76
ruby.c
View file

@ -82,14 +82,14 @@ usage(name)
"-Idirectory specify $LOAD_PATH directory (may be used more than once)",
"-Kkcode specifies KANJI (Japanese) code-set",
"-l enable line ending processing",
"-n assume 'while gets; ...; end' loop around your script",
"-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] turn on tainting checks",
"-v enables verbose mode",
"-w turn warnings on for compilation of your script",
"-v print version number, then turn on verbose mode",
"-w turn warnings on for your script",
"-x[directory] strip off text before #!ruby line and perhaps cd to directory",
"--copyright print the copyright",
"--version print the version",
@ -167,7 +167,7 @@ rubylib_mangle(s, l)
#endif
static void
addpath(path)
incpush(path)
const char *path;
{
const char sep = PATH_SEP_CHAR;
@ -196,10 +196,43 @@ addpath(path)
break;
}
}
rb_load_path = rb_ary_plus(ary, rb_load_path);
rb_ary_concat(rb_load_path, ary);
}
else {
rb_ary_unshift(rb_load_path, rubylib_mangled_path2(path));
rb_ary_push(rb_load_path, rubylib_mangled_path2(path));
}
}
static void
ruby_path_init()
{
if (rb_safe_level() == 0) {
incpush(getenv("RUBYLIB"));
}
#ifdef RUBY_SEARCH_PATH
incpush(RUBY_SEARCH_PATH);
#endif
#ifdef RUBY_SITE_THIN_ARCHLIB
incpush(RUBY_SITE_THIN_ARCHLIB);
#endif
incpush(RUBY_SITE_ARCHLIB);
incpush(RUBY_SITE_LIB2);
incpush(RUBY_SITE_LIB);
#ifdef RUBY_THIN_ARCHLIB
incpush(RUBY_THIN_ARCHLIB);
#endif
incpush(RUBY_ARCHLIB);
incpush(RUBY_LIB);
#if defined(_WIN32) || defined(DJGPP)
incpush(ruby_libpath());
#endif
if (rb_safe_level() == 0) {
incpush(".");
}
}
@ -235,11 +268,6 @@ require_libraries()
struct req_list *list = req_list_head.next;
struct req_list *tmp;
if (rb_safe_level() == 0) {
rb_ary_push(rb_load_path, rb_str_new2("."));
addpath(getenv("RUBYLIB"));
}
Init_ext(); /* should be called here for some reason :-( */
ruby_sourcefile = 0;
save[0] = ruby_eval_tree;
@ -487,9 +515,9 @@ proc_options(argc, argv)
case 'I':
forbid_setid("-I");
if (*++s)
addpath(s);
incpush(s);
else if (argv[1]) {
addpath(argv[1]);
incpush(argv[1]);
argc--,argv++;
}
break;
@ -631,6 +659,7 @@ proc_options(argc, argv)
ruby_set_argv(argc, argv);
process_sflag();
ruby_path_init();
ruby_sourcefile = argv0;
if (e_script) {
require_libraries();
@ -929,27 +958,6 @@ ruby_prog_init()
rb_define_readonly_variable("$-p", &do_print);
rb_define_readonly_variable("$-l", &do_line);
addpath(RUBY_LIB);
#if defined(_WIN32) || defined(DJGPP)
addpath(ruby_libpath());
#endif
addpath(RUBY_ARCHLIB);
#ifdef RUBY_THIN_ARCHLIB
addpath(RUBY_THIN_ARCHLIB);
#endif
addpath(RUBY_SITE_LIB);
addpath(RUBY_SITE_LIB2);
addpath(RUBY_SITE_ARCHLIB);
#ifdef RUBY_SITE_THIN_ARCHLIB
addpath(RUBY_SITE_THIN_ARCHLIB);
#endif
#ifdef RUBY_SEARCH_PATH
addpath(RUBY_SEARCH_PATH);
#endif
rb_define_hooked_variable("$0", &rb_progname, 0, set_arg0);
rb_argv = rb_ary_new();