Ruby  2.7.1p83(2020-03-31revisiona0c7c23c9cec0d0ffcba012279cd652d28ad5bf3)
Data Structures | Macros | Typedefs | Enumerations | Functions | Variables
ruby.c File Reference
#include "ruby/encoding.h"
#include "ruby/thread.h"
#include "ruby/version.h"
#include "internal.h"
#include "eval_intern.h"
#include "dln.h"
#include <stdio.h>
#include <sys/types.h>
#include <ctype.h>
#include "ruby/util.h"
#include "mjit.h"

Go to the source code of this file.

Data Structures

struct  ruby_features_t
 
struct  ruby_cmdline_options
 
struct  load_file_arg
 

Macros

#define MAXPATHLEN   1024
 
#define O_ACCMODE   (O_RDONLY | O_WRONLY | O_RDWR)
 
#define DISABLE_RUBYGEMS   0
 
#define DEFAULT_RUBYGEMS_ENABLED   "enabled"
 
#define COMMA   ,
 
#define FEATURE_BIT(bit)   (1U << feature_##bit)
 
#define EACH_FEATURES(X, SEP)
 
#define EACH_DEBUG_FEATURES(X, SEP)
 
#define AMBIGUOUS_FEATURE_NAMES   0 /* no ambiguous feature names now */
 
#define DEFINE_FEATURE(bit)   feature_##bit
 
#define DEFINE_DEBUG_FEATURE(bit)   feature_debug_##bit
 
#define DEBUG_BIT(bit)   (1U << feature_debug_##bit)
 
#define DUMP_BIT(bit)   (1U << dump_##bit)
 
#define DEFINE_DUMP(bit)   dump_##bit
 
#define EACH_DUMPS(X, SEP)
 
#define FEATURE_SET_TO(feat, bit_mask, bit_set)   rb_feature_set_to(&(feat), bit_mask, bit_set)
 
#define FEATURE_SET(feat, bits)   FEATURE_SET_TO(feat, bits, bits)
 
#define FEATURE_SET_RESTORE(feat, save)   FEATURE_SET_TO(feat, (save).mask, (save).set & (save).mask)
 
#define FEATURE_SET_P(feat, bits)   ((feat).set & (bits))
 
#define src_encoding_index   GET_VM()->src_encoding_index
 
#define forbid_setid(s)   forbid_setid((s), opt)
 
#define M(shortopt, longopt, desc)
 
#define SHOW(m)   show_usage_line((m).str, (m).namelen, (m).secondlen, help)
 
#define rubylib_path_new   rb_str_new
 
#define UTF8_PATH   0
 
#define IF_UTF8_PATH(t, f)   f
 
#define str_conv_enc(str, from, to)   (str)
 
#define INITIAL_LOAD_PATH_MARK   rb_intern_const("@gem_prelude_index")
 
#define RUBY_RELATIVE(path, len)   rubylib_path_new((path), (len))
 
#define PREFIX_PATH()   RUBY_RELATIVE(ruby_exec_prefix, exec_prefix_len)
 
#define NAME_MATCH_P(name, str, len)   ((len) < (int)sizeof(name) && name_match_p((name), (str), (len)))
 
#define UNSET_WHEN(name, bit, str, len)
 
#define SET_WHEN(name, bit, str, len)
 
#define LITERAL_NAME_ELEMENT(name)   #name
 
#define FEATURE_FOUND   goto found
 
#define SET_FEATURE(bit)   if (NAME_MATCH_P(#bit, str, len)) {set |= mask = FEATURE_BIT(bit); FEATURE_FOUND;}
 
#define SET_WHEN_DEBUG(bit)
 
#define SET_WHEN_DUMP(bit)   SET_WHEN(#bit, DUMP_BIT(bit), str, len)
 
#define set_internal_encoding_once(opt, e, elen)   set_option_encoding_once("default_internal", &(opt)->intern.enc.name, (e), (elen))
 
#define set_external_encoding_once(opt, e, elen)   set_option_encoding_once("default_external", &(opt)->ext.enc.name, (e), (elen))
 
#define set_source_encoding_once(opt, e, elen)   set_option_encoding_once("source", &(opt)->src.enc.name, (e), (elen))
 
#define is_option_end(c, allow_hyphen)   (!(c) || ((allow_hyphen) && (c) == '-') || (c) == '=')
 
#define check_envopt(name, allow_envopt)
 
#define need_argument(name, s, needs_arg, next_arg)
 
#define is_option_with_arg(name, allow_hyphen, allow_envopt)   is_option_with_optarg(name, allow_hyphen, allow_envopt, Qtrue, Qtrue)
 
#define is_option_with_optarg(name, allow_hyphen, allow_envopt, needs_arg, next_arg)
 
#define set_encoding_part(type)
 
#define rb_progname   (GET_VM()->progname)
 
#define rb_orig_progname   (GET_VM()->orig_progname)
 
#define rb_define_readonly_boolean(name, val)   rb_define_virtual_variable((name), (val) ? true_value : false_value, 0)
 
#define SET_COMPILE_OPTION(h, o, name)
 
#define MODE_TO_LOAD   (O_RDONLY)
 

Typedefs

typedef struct ruby_cmdline_options ruby_cmdline_options_t
 

Enumerations

enum  feature_flag_bits {
  EACH_FEATURES =(DEFINE_FEATURE, COMMA), feature_debug_flag_first, feature_debug_flag_begin = feature_debug_flag_first - 1, EACH_DEBUG_FEATURES =(DEFINE_DEBUG_FEATURE, COMMA),
  feature_flag_count
}
 
enum  dump_flag_bits { dump_version_v, EACH_DUMPS =(DEFINE_DUMP, COMMA), dump_exit_bits }
 
enum  { COMPILATION_FEATURES, DEFAULT_FEATURES }
 

Functions

void Init_ruby_description (void)
 
chargetenv ()
 
void rb_warning_category_update (unsigned int mask, unsigned int bits)
 
void ruby_push_include (const char *path, VALUE(*filter)(VALUE))
 
void ruby_incpush (const char *path)
 
void ruby_incpush_expand (const char *path)
 
void ruby_init_loadpath (void)
 
int ruby_env_debug_option (const char *str, int len, void *arg)
 
void Init_builtin_features (void)
 
voidrb_load_file (const char *fname)
 
voidrb_load_file_str (VALUE fname_v)
 
voidrb_parser_load_file (VALUE parser, VALUE fname_v)
 
void ruby_script (const char *name)
 Sets the current script name to this value. More...
 
void ruby_set_script_name (VALUE name)
 Sets the current script name to this value. More...
 
void ruby_prog_init (void)
 Defines built-in variables. More...
 
void ruby_set_argv (int argc, char **argv)
 
voidruby_process_options (int argc, char **argv)
 
void ruby_sysinit (int *argc, char ***argv)
 Initializes the process for libruby. More...
 

Variables

VALUE ruby_archlibdir_path
 
VALUE ruby_prefix_path
 
const RUBY_EXTERN int ruby_patchlevel
 
VALUE rb_argv0
 
VALUE rb_e_script
 

Macro Definition Documentation

◆ AMBIGUOUS_FEATURE_NAMES

#define AMBIGUOUS_FEATURE_NAMES   0 /* no ambiguous feature names now */

Definition at line 90 of file ruby.c.

◆ check_envopt

#define check_envopt (   name,
  allow_envopt 
)
Value:
(((allow_envopt) || !envopt) ? (void)0 : \
rb_raise(rb_eRuntimeError, "invalid switch in RUBYOPT: --" name))

◆ COMMA

#define COMMA   ,

Definition at line 74 of file ruby.c.

◆ DEBUG_BIT

#define DEBUG_BIT (   bit)    (1U << feature_debug_##bit)

Definition at line 101 of file ruby.c.

◆ DEFAULT_RUBYGEMS_ENABLED

#define DEFAULT_RUBYGEMS_ENABLED   "enabled"

Definition at line 69 of file ruby.c.

◆ DEFINE_DEBUG_FEATURE

#define DEFINE_DEBUG_FEATURE (   bit)    feature_debug_##bit

Definition at line 92 of file ruby.c.

◆ DEFINE_DUMP

#define DEFINE_DUMP (   bit)    dump_##bit

Definition at line 104 of file ruby.c.

◆ DEFINE_FEATURE

#define DEFINE_FEATURE (   bit)    feature_##bit

Definition at line 91 of file ruby.c.

◆ DISABLE_RUBYGEMS

#define DISABLE_RUBYGEMS   0

Definition at line 64 of file ruby.c.

◆ DUMP_BIT

#define DUMP_BIT (   bit)    (1U << dump_##bit)

Definition at line 103 of file ruby.c.

◆ EACH_DEBUG_FEATURES

#define EACH_DEBUG_FEATURES (   X,
  SEP 
)
Value:
X(frozen_string_literal) \
/* END OF DEBUG FEATURES */

Definition at line 87 of file ruby.c.

◆ EACH_DUMPS

#define EACH_DUMPS (   X,
  SEP 
)
Value:
X(version) \
SEP \
X(copyright) \
SEP \
X(usage) \
SEP \
X(help) \
SEP \
X(yydebug) \
SEP \
X(syntax) \
SEP \
X(parsetree) \
SEP \
X(parsetree_with_comment) \
SEP \
X(insns) \
/* END OF DUMPS */

Definition at line 105 of file ruby.c.

◆ EACH_FEATURES

#define EACH_FEATURES (   X,
  SEP 
)
Value:
X(gems) \
SEP \
X(did_you_mean) \
SEP \
X(rubyopt) \
SEP \
X(frozen_string_literal) \
SEP \
X(jit) \
/* END OF FEATURES */

Definition at line 76 of file ruby.c.

◆ FEATURE_BIT

#define FEATURE_BIT (   bit)    (1U << feature_##bit)

Definition at line 75 of file ruby.c.

◆ FEATURE_FOUND

#define FEATURE_FOUND   goto found

◆ FEATURE_SET

#define FEATURE_SET (   feat,
  bits 
)    FEATURE_SET_TO(feat, bits, bits)

Definition at line 148 of file ruby.c.

◆ FEATURE_SET_P

#define FEATURE_SET_P (   feat,
  bits 
)    ((feat).set & (bits))

Definition at line 150 of file ruby.c.

◆ FEATURE_SET_RESTORE

#define FEATURE_SET_RESTORE (   feat,
  save 
)    FEATURE_SET_TO(feat, (save).mask, (save).set & (save).mask)

Definition at line 149 of file ruby.c.

◆ FEATURE_SET_TO

#define FEATURE_SET_TO (   feat,
  bit_mask,
  bit_set 
)    rb_feature_set_to(&(feat), bit_mask, bit_set)

Definition at line 146 of file ruby.c.

◆ forbid_setid

#define forbid_setid (   s)    forbid_setid((s), opt)

Definition at line 219 of file ruby.c.

◆ IF_UTF8_PATH

#define IF_UTF8_PATH (   t,
  f 
)    f

Definition at line 487 of file ruby.c.

◆ INITIAL_LOAD_PATH_MARK

#define INITIAL_LOAD_PATH_MARK   rb_intern_const("@gem_prelude_index")

Definition at line 577 of file ruby.c.

◆ is_option_end

#define is_option_end (   c,
  allow_hyphen 
)    (!(c) || ((allow_hyphen) && (c) == '-') || (c) == '=')

◆ is_option_with_arg

#define is_option_with_arg (   name,
  allow_hyphen,
  allow_envopt 
)    is_option_with_optarg(name, allow_hyphen, allow_envopt, Qtrue, Qtrue)

◆ is_option_with_optarg

#define is_option_with_optarg (   name,
  allow_hyphen,
  allow_envopt,
  needs_arg,
  next_arg 
)
Value:
(strncmp((name), s, n = sizeof(name) - 1) == 0 && is_option_end(s[n], (allow_hyphen)) ? \
(check_envopt(name, (allow_envopt)), s += n, \
need_argument(name, s, needs_arg, next_arg), 1) : 0)

◆ LITERAL_NAME_ELEMENT

#define LITERAL_NAME_ELEMENT (   name)    #name

Definition at line 866 of file ruby.c.

◆ M

#define M (   shortopt,
  longopt,
  desc 
)
Value:
{ \
shortopt " " longopt " " desc, \
(unsigned short)sizeof(shortopt), \
(unsigned short)sizeof(longopt), \
}

◆ MAXPATHLEN

#define MAXPATHLEN   1024

Definition at line 47 of file ruby.c.

◆ MODE_TO_LOAD

#define MODE_TO_LOAD   (O_RDONLY)

◆ NAME_MATCH_P

#define NAME_MATCH_P (   name,
  str,
  len 
)    ((len) < (int)sizeof(name) && name_match_p((name), (str), (len)))

Definition at line 851 of file ruby.c.

◆ need_argument

#define need_argument (   name,
  s,
  needs_arg,
  next_arg 
)
Value:
((*(s) ? !*++(s) : (next_arg) && (!argc || !((s) = argv[1]) || (--argc, ++argv, 0))) && (needs_arg) ? \
rb_raise(rb_eRuntimeError, "missing argument for --" name) \
: (void)0)

◆ O_ACCMODE

#define O_ACCMODE   (O_RDONLY | O_WRONLY | O_RDWR)

Definition at line 50 of file ruby.c.

◆ PREFIX_PATH

#define PREFIX_PATH ( )    RUBY_RELATIVE(ruby_exec_prefix, exec_prefix_len)

◆ rb_define_readonly_boolean

#define rb_define_readonly_boolean (   name,
  val 
)    rb_define_virtual_variable((name), (val) ? true_value : false_value, 0)

Definition at line 1481 of file ruby.c.

◆ rb_orig_progname

#define rb_orig_progname   (GET_VM()->orig_progname)

Definition at line 1465 of file ruby.c.

◆ rb_progname

#define rb_progname   (GET_VM()->progname)

Definition at line 1464 of file ruby.c.

◆ RUBY_RELATIVE

#define RUBY_RELATIVE (   path,
  len 
)    rubylib_path_new((path), (len))

◆ rubylib_path_new

#define rubylib_path_new   rb_str_new

Definition at line 342 of file ruby.c.

◆ SET_COMPILE_OPTION

#define SET_COMPILE_OPTION (   h,
  o,
  name 
)

◆ set_encoding_part

#define set_encoding_part (   type)
Value:
if (!(p = strchr(s, ':'))) { \
set_##type##_encoding_once(opt, s, 0); \
break; \
} \
else if (p > s) { \
set_##type##_encoding_once(opt, s, p-s); \
}

◆ set_external_encoding_once

#define set_external_encoding_once (   opt,
  e,
  elen 
)    set_option_encoding_once("default_external", &(opt)->ext.enc.name, (e), (elen))

Definition at line 970 of file ruby.c.

◆ SET_FEATURE

#define SET_FEATURE (   bit)    if (NAME_MATCH_P(#bit, str, len)) {set |= mask = FEATURE_BIT(bit); FEATURE_FOUND;}

◆ set_internal_encoding_once

#define set_internal_encoding_once (   opt,
  e,
  elen 
)    set_option_encoding_once("default_internal", &(opt)->intern.enc.name, (e), (elen))

Definition at line 968 of file ruby.c.

◆ set_source_encoding_once

#define set_source_encoding_once (   opt,
  e,
  elen 
)    set_option_encoding_once("source", &(opt)->src.enc.name, (e), (elen))

Definition at line 972 of file ruby.c.

◆ SET_WHEN

#define SET_WHEN (   name,
  bit,
  str,
  len 
)
Value:
if (NAME_MATCH_P((name), (str), (len))) { \
*(unsigned int *)arg |= (bit); \
return; \
}

Definition at line 860 of file ruby.c.

◆ SET_WHEN_DEBUG

#define SET_WHEN_DEBUG (   bit)
Value:
if (NAME_MATCH_P(#bit, str, len)) { \
FEATURE_SET(*argp, DEBUG_BIT(bit)); \
return; \
}

◆ SET_WHEN_DUMP

#define SET_WHEN_DUMP (   bit)    SET_WHEN(#bit, DUMP_BIT(bit), str, len)

◆ SHOW

#define SHOW (   m)    show_usage_line((m).str, (m).namelen, (m).secondlen, help)

◆ src_encoding_index

#define src_encoding_index   GET_VM()->src_encoding_index

Definition at line 182 of file ruby.c.

◆ str_conv_enc

#define str_conv_enc (   str,
  from,
  to 
)    (str)

Definition at line 499 of file ruby.c.

◆ UNSET_WHEN

#define UNSET_WHEN (   name,
  bit,
  str,
  len 
)
Value:
if (NAME_MATCH_P((name), (str), (len))) { \
*(unsigned int *)arg &= ~(bit); \
return; \
}

Definition at line 854 of file ruby.c.

◆ UTF8_PATH

#define UTF8_PATH   0

Definition at line 482 of file ruby.c.

Typedef Documentation

◆ ruby_cmdline_options_t

Definition at line 132 of file ruby.c.

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
COMPILATION_FEATURES 
DEFAULT_FEATURES 

Definition at line 184 of file ruby.c.

◆ dump_flag_bits

Enumerator
dump_version_v 
EACH_DUMPS 
dump_exit_bits 

Definition at line 124 of file ruby.c.

◆ feature_flag_bits

Enumerator
EACH_FEATURES 
feature_debug_flag_first 
feature_debug_flag_begin 
EACH_DEBUG_FEATURES 
feature_flag_count 

Definition at line 93 of file ruby.c.

Function Documentation

◆ getenv()

char* getenv ( )

Referenced by ruby_init_loadpath().

◆ Init_builtin_features()

void Init_builtin_features ( void  )

Definition at line 66 of file builtin.c.

References NULL, and rb_load_with_builtin_functions().

◆ Init_ruby_description()

void Init_ruby_description ( void  )

Definition at line 100 of file version.c.

References MJIT_OPTS_ON, MKSTR, and rb_define_global_const().

◆ rb_load_file()

void* rb_load_file ( const char fname)

Definition at line 2180 of file ruby.c.

References load_file_arg::fname, rb_load_file_str(), and rb_str_new_cstr.

◆ rb_load_file_str()

void* rb_load_file_str ( VALUE  fname_v)

Definition at line 2187 of file ruby.c.

References rb_parser_load_file(), and rb_parser_new().

Referenced by rb_load_file().

◆ rb_parser_load_file()

void* rb_parser_load_file ( VALUE  parser,
VALUE  fname_v 
)

Definition at line 2193 of file ruby.c.

References f, and load_file_arg::opt.

Referenced by rb_load_file_str().

◆ ruby_env_debug_option()

int ruby_env_debug_option ( const char str,
int  len,
void arg 
)

◆ ruby_incpush_expand()

void ruby_incpush_expand ( const char path)

Definition at line 443 of file ruby.c.

References path, and ruby_push_include().

◆ ruby_push_include()

void ruby_push_include ( const char path,
VALUE(*)(VALUE filter 
)

Definition at line 406 of file ruby.c.

References path.

Referenced by ruby_incpush(), ruby_incpush_expand(), and ruby_init_loadpath().

Variable Documentation

◆ argc

int argc

◆ argv

int const VALUE * argv

◆ rb_argv0

VALUE rb_argv0

Definition at line 1466 of file ruby.c.

◆ rb_e_script

VALUE rb_e_script

Definition at line 1467 of file ruby.c.

◆ ruby_archlibdir_path

VALUE ruby_archlibdir_path

Definition at line 579 of file ruby.c.

Referenced by ruby_init_loadpath().

◆ ruby_patchlevel

const RUBY_EXTERN int ruby_patchlevel

Definition at line 921 of file ruby.c.

◆ ruby_prefix_path

VALUE ruby_prefix_path

Definition at line 579 of file ruby.c.

Referenced by ruby_init_loadpath().

n
const char size_t n
Definition: rb_mjit_min_header-2.7.1.h:5456
strchr
char * strchr(char *, char)
rb_intern_const
#define rb_intern_const(str)
Definition: ruby.h:1879
FEATURE_SET_P
#define FEATURE_SET_P(feat, bits)
Definition: ruby.c:150
arg
VALUE arg
Definition: rb_mjit_min_header-2.7.1.h:5601
Qfalse
#define Qfalse
Definition: ruby.h:467
check_envopt
#define check_envopt(name, allow_envopt)
ID2SYM
#define ID2SYM(x)
Definition: ruby.h:414
rb_raise
void rb_raise(VALUE exc, const char *fmt,...)
Definition: error.c:2669
void
void
Definition: rb_mjit_min_header-2.7.1.h:13278
h
size_t st_index_t h
Definition: rb_mjit_min_header-2.7.1.h:5462
is_option_end
#define is_option_end(c, allow_hyphen)
rb_eRuntimeError
VALUE rb_eRuntimeError
Definition: error.c:920
short
#define short
Definition: rb_mjit_min_header-2.7.1.h:2877
FEATURE_BIT
#define FEATURE_BIT(bit)
Definition: ruby.c:75
argv
char ** argv
Definition: ruby.c:223
yydebug
#define yydebug
Definition: ripper.c:96
str
char str[HTML_ESCAPE_MAX_LEN+1]
Definition: escape.c:18
rb_hash_aset
VALUE rb_hash_aset(VALUE hash, VALUE key, VALUE val)
Definition: hash.c:2847
argc
int argc
Definition: ruby.c:222
Qtrue
#define Qtrue
Definition: ruby.h:468
len
uint8_t len
Definition: escape.c:17
strncmp
int strncmp(const char *, const char *, size_t)
DEBUG_BIT
#define DEBUG_BIT(bit)
Definition: ruby.c:101
NAME_MATCH_P
#define NAME_MATCH_P(name, str, len)
Definition: ruby.c:851
ruby::backward::cxxanyargs::type
VALUE type(ANYARGS)
ANYARGS-ed function type.
Definition: cxxanyargs.hpp:39
name
const char * name
Definition: nkf.c:208