* bcc32/mkexports.rb: to work on cygwin via telnet.

[ruby-win32:358]

* ext/tcltklib/tcltklib.c (ip_invoke): requires command name
  argument.  [ruby-dev:18438]

* eval.c (ruby_init, ruby_options): Init_stack() with local
  location.  (ruby-bugs-ja:PR#277)

* eval.c (rb_call0): disable trace call.  [ruby-dev:18074]

* eval.c (eval, rb_load): enable trace call.  [ruby-dev:18074]

* eval.c (rb_f_require): set source file name for extension
  libraries.  [ruby-dev:18445]

* ruby.c (translate_char): translate a character in a string;
  DOSISH only.  [ruby-dev:18274]

* ruby.c (ruby_init_loadpath): added argv[0] handling under
  Human68K.  [ruby-dev:18274]

* ruby.c (proc_options): translate directory separator in $0 to
  '/'.  [ruby-dev:18274]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2929 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
nobu 2002-10-03 11:20:31 +00:00
Родитель 29cef5f795
Коммит 4b6dffad02
6 изменённых файлов: 91 добавлений и 21 удалений

Просмотреть файл

@ -1,3 +1,30 @@
Thu Oct 3 20:16:12 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
* bcc32/mkexports.rb: to work on cygwin via telnet.
[ruby-win32:358]
* ext/tcltklib/tcltklib.c (ip_invoke): requires command name
argument. [ruby-dev:18438]
* eval.c (ruby_init, ruby_options): Init_stack() with local
location. (ruby-bugs-ja:PR#277)
* eval.c (rb_call0): disable trace call. [ruby-dev:18074]
* eval.c (eval, rb_load): enable trace call. [ruby-dev:18074]
* eval.c (rb_f_require): set source file name for extension
libraries. [ruby-dev:18445]
* ruby.c (translate_char): translate a character in a string;
DOSISH only. [ruby-dev:18274]
* ruby.c (ruby_init_loadpath): added argv[0] handling under
Human68K. [ruby-dev:18274]
* ruby.c (proc_options): translate directory separator in $0 to
'/'. [ruby-dev:18274]
Thu Oct 3 00:27:26 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
* lib/delegate.rb (Delegator::initialize): use Object#class

Просмотреть файл

@ -1,14 +1,13 @@
#!./miniruby -s
SYM = {}
objs = ARGV.collect {|s| s.tr('/', '\\')}
system("tdump -oiPUBDEF -oiPUBD32 #{objs.join(' ')} > pub.def")
sleep(1)
IO.foreach('pub.def'){|l|
next unless /(PUBDEF|PUBD32)/ =~ l
/'(.*?)'/ =~ l
SYM[$1] = true
}
STDIN.reopen(open("nul"))
ARGV.each do |obj|
IO.foreach("|tdump -q -oiPUBDEF -oiPUBD32 #{obj.tr('/', '\\')}") do |l|
next unless /(?:PUBDEF|PUBD32)/ =~ l
SYM[$1] = true if /'(.*?)'/ =~ l
end
end
exports = []
if $name

25
eval.c
Просмотреть файл

@ -887,6 +887,8 @@ static void assign _((VALUE,NODE*,VALUE,int));
static VALUE trace_func = 0;
static int tracing = 0;
static void call_trace_func _((char*,NODE*,VALUE,ID,VALUE));
#define ENABLE_TRACE() (tracing &= ~2)
#define DISABLE_TRACE() (tracing |= 2)
#define SET_CURRENT_SOURCE() (ruby_sourcefile = ruby_current_node->nd_file, \
ruby_sourceline = nd_line(ruby_current_node))
@ -1069,7 +1071,7 @@ ruby_init()
rb_origenviron = environ;
#endif
Init_stack(0);
Init_stack((void*)&state);
Init_heap();
PUSH_SCOPE();
ruby_scope->local_vars = 0;
@ -1190,6 +1192,7 @@ ruby_options(argc, argv)
{
int state;
Init_stack((void*)&state);
PUSH_TAG(PROT_NONE);
if ((state = EXEC_TAG()) == 0) {
ruby_process_options(argc, argv);
@ -1866,7 +1869,7 @@ is_defined(self, node, buf)
}
check_bound:
{
int call = nd_type(node)== NODE_CALL;
int call = nd_type(node)==NODE_CALL;
val = CLASS_OF(val);
if (call) {
@ -4499,13 +4502,16 @@ rb_call0(klass, recv, id, oid, argc, argv, body, nosuper)
}
if (trace_func) {
int state;
volatile int old_tracing = tracing;
call_trace_func("c-call", ruby_current_node, recv, id, klass);
DISABLE_TRACE();
PUSH_TAG(PROT_FUNC);
if ((state = EXEC_TAG()) == 0) {
result = call_cfunc(body->nd_cfnc, recv, len, argc, argv);
}
POP_TAG();
tracing = old_tracing;
ruby_current_node = ruby_frame->node;
call_trace_func("c-return", ruby_current_node, recv, id, klass);
if (state) JUMP_TAG(state);
@ -4968,6 +4974,7 @@ eval(self, src, scope, file, line)
struct FRAME frame;
NODE *nodesave = ruby_current_node;
volatile int iter = ruby_frame->iter;
volatile int old_tracing = tracing;
int state;
if (!NIL_P(scope)) {
@ -5030,6 +5037,7 @@ eval(self, src, scope, file, line)
compile_error(0);
}
if (!NIL_P(result)) ruby_errinfo = result;
ENABLE_TRACE();
result = eval_node(self, node);
}
POP_TAG();
@ -5071,6 +5079,7 @@ eval(self, src, scope, file, line)
}
ruby_current_node = nodesave;
ruby_set_current_source();
tracing = old_tracing;
if (state) {
if (state == TAG_RAISE) {
VALUE err;
@ -5304,6 +5313,7 @@ rb_load(fname, wrap)
volatile ID last_func;
volatile VALUE wrapper = 0;
volatile VALUE self = ruby_top_self;
volatile int old_tracing = tracing;
NODE *saved_cref = ruby_cref;
TMP_PROTECT;
@ -5357,6 +5367,7 @@ rb_load(fname, wrap)
node = ruby_eval_tree;
ALLOW_INTS;
if (ruby_nerrs == 0) {
ENABLE_TRACE();
eval_node(self, node);
}
}
@ -5372,6 +5383,7 @@ rb_load(fname, wrap)
POP_CLASS();
POP_VARS();
ruby_wrapper = wrapper;
tracing = old_tracing;
if (ruby_nerrs > 0) {
ruby_nerrs = 0;
rb_exc_raise(ruby_errinfo);
@ -5576,7 +5588,13 @@ rb_f_require(obj, fname)
rb_provide_feature(feature);
{
int volatile old_vmode = scope_vmode;
NODE *const volatile old_node = ruby_current_node;
const volatile old_func = ruby_frame->last_func;
ruby_current_node = 0;
ruby_sourcefile = rb_source_filename(RSTRING(fname)->ptr);
ruby_sourceline = 0;
ruby_frame->last_func = 0;
PUSH_TAG(PROT_NONE);
if ((state = EXEC_TAG()) == 0) {
void *handle;
@ -5586,6 +5604,9 @@ rb_f_require(obj, fname)
rb_ary_push(ruby_dln_librefs, LONG2NUM((long)handle));
}
POP_TAG();
ruby_current_node = old_node;
ruby_set_current_source();
ruby_frame->last_func = old_func;
SCOPE_SET(old_vmode);
}
if (state) JUMP_TAG(state);

Просмотреть файл

@ -767,6 +767,9 @@ ip_invoke(argc, argv, obj)
VALUE *alloc_argv, *alloc_result;
Tcl_QueuePosition position;
if (argc < 1) {
rb_raise(rb_eArgError, "command name missing");
}
if (eventloop_thread == 0 || current == eventloop_thread) {
DUMP2("invoke from current eventloop %lx", current);
return ip_invoke_real(argc, argv, obj);

38
ruby.c
Просмотреть файл

@ -203,10 +203,30 @@ ruby_incpush(path)
}
}
#if defined _WIN32 || defined __CYGWIN__ || defined __DJGPP__ || defined __EMX__
#if defined DOSISH || defined __CYGWIN__
#define LOAD_RELATIVE 1
#endif
#ifdef DOSISH
static inline void translate_char _((char *, int, int));
static inline void
translate_char(p, from, to)
char *p;
int from, to;
{
while (*p) {
if ((unsigned char)*p == from)
*p = to;
#ifdef CharNext /* defined as CharNext[AW] on Windows. */
p = CharNext(p);
#else
p += mblen(p, MB_CUR_MAX);
#endif
}
}
#endif
void
ruby_init_loadpath()
{
@ -224,19 +244,16 @@ ruby_init_loadpath()
#elif defined(DJGPP)
extern char *__dos_argv0;
strncpy(libpath, __dos_argv0, FILENAME_MAX);
#define CharNext(p) ((p) + mblen(p, MB_CUR_MAX))
#elif defined(__human68k__)
extern char **_argv;
strncpy(libpath, _argv[0], FILENAME_MAX);
#elif defined(__EMX__)
_execname(libpath, FILENAME_MAX);
#endif
#ifndef CharNext /* defined as CharNext[AW] on Windows. */
#define CharNext(p) ((p) + 1)
#ifdef DOSISH
translate_char(libpath, '\\', '/');
#endif
for (p = libpath; *p; p = CharNext(p))
if (*p == '\\')
*p = '/';
p = strrchr(libpath, '/');
if (p) {
*p = 0;
@ -711,6 +728,9 @@ proc_options(argc, argv)
if (!e_script) {
argc--; argv++;
}
#ifdef DOSISH
translate_char(script, '\\', '/');
#endif
}
ruby_script(script);

Просмотреть файл

@ -1,4 +1,4 @@
#define RUBY_VERSION "1.7.3"
#define RUBY_RELEASE_DATE "2002-10-02"
#define RUBY_RELEASE_DATE "2002-10-03"
#define RUBY_VERSION_CODE 173
#define RUBY_RELEASE_CODE 20021002
#define RUBY_RELEASE_CODE 20021003