mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
matz
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@903 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
d68d1d1584
commit
df9d49d088
8 changed files with 80 additions and 47 deletions
15
ChangeLog
15
ChangeLog
|
@ -1,3 +1,18 @@
|
||||||
|
Fri Aug 25 15:24:39 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
|
||||||
|
|
||||||
|
* variable.c (rb_cvar_get): should not follow __attached__.
|
||||||
|
|
||||||
|
* variable.c (mod_av_set): second class variable assignment at the
|
||||||
|
toplevel shoule not give warning.
|
||||||
|
|
||||||
|
Fri Aug 25 01:18:36 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
|
||||||
|
|
||||||
|
* io.c (next_argv): prepare path for open file.
|
||||||
|
|
||||||
|
* string.c (rb_str_setter): moved from io.c.
|
||||||
|
|
||||||
|
* io.c (next_argv): filename should be "-" for refreshed ARGF.
|
||||||
|
|
||||||
Thu Aug 24 15:27:39 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
|
Thu Aug 24 15:27:39 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
|
||||||
|
|
||||||
* ext/socket/socketport.h: use `extern int h_errno' if needed.
|
* ext/socket/socketport.h: use `extern int h_errno' if needed.
|
||||||
|
|
3
eval.c
3
eval.c
|
@ -3590,6 +3590,9 @@ assign(self, lhs, val, check)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case NODE_CVDECL:
|
case NODE_CVDECL:
|
||||||
|
rb_cvar_declare(ruby_cbase, lhs->nd_vid, val);
|
||||||
|
break;
|
||||||
|
|
||||||
case NODE_CVASGN:
|
case NODE_CVASGN:
|
||||||
rb_cvar_set(ruby_cbase, lhs->nd_vid, val);
|
rb_cvar_set(ruby_cbase, lhs->nd_vid, val);
|
||||||
break;
|
break;
|
||||||
|
|
2
intern.h
2
intern.h
|
@ -204,7 +204,6 @@ VALUE rb_io_eof _((VALUE));
|
||||||
VALUE rb_io_binmode _((VALUE));
|
VALUE rb_io_binmode _((VALUE));
|
||||||
VALUE rb_file_open _((const char*, const char*));
|
VALUE rb_file_open _((const char*, const char*));
|
||||||
VALUE rb_gets _((void));
|
VALUE rb_gets _((void));
|
||||||
void rb_str_setter _((VALUE, ID, VALUE*));
|
|
||||||
/* numeric.c */
|
/* numeric.c */
|
||||||
void rb_num_zerodiv _((void));
|
void rb_num_zerodiv _((void));
|
||||||
VALUE rb_num_coerce_bin _((VALUE, VALUE));
|
VALUE rb_num_coerce_bin _((VALUE, VALUE));
|
||||||
|
@ -320,6 +319,7 @@ VALUE rb_str_upto _((VALUE, VALUE, int));
|
||||||
VALUE rb_str_inspect _((VALUE));
|
VALUE rb_str_inspect _((VALUE));
|
||||||
VALUE rb_str_split _((VALUE, const char*));
|
VALUE rb_str_split _((VALUE, const char*));
|
||||||
void rb_str_associate _((VALUE, VALUE));
|
void rb_str_associate _((VALUE, VALUE));
|
||||||
|
void rb_str_setter _((VALUE, ID, VALUE*));
|
||||||
/* struct.c */
|
/* struct.c */
|
||||||
VALUE rb_struct_new __((VALUE, ...));
|
VALUE rb_struct_new __((VALUE, ...));
|
||||||
VALUE rb_struct_define __((const char*, ...));
|
VALUE rb_struct_define __((const char*, ...));
|
||||||
|
|
48
io.c
48
io.c
|
@ -19,6 +19,14 @@
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
|
|
||||||
|
#if defined(MSDOS) || defined(__BOW__) || defined(__CYGWIN__) || defined(NT) || defined(__human68k__) || defined(__EMX__)
|
||||||
|
# define NO_SAFE_RENAME
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(MSDOS) || defined(__CYGWIN__) || defined(NT)
|
||||||
|
# define NO_LONG_FNAME
|
||||||
|
#endif
|
||||||
|
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
#if !defined(DJGPP) && !defined(NT) && !defined(__human68k__)
|
#if !defined(DJGPP) && !defined(NT) && !defined(__human68k__)
|
||||||
#include <sys/ioctl.h>
|
#include <sys/ioctl.h>
|
||||||
|
@ -2244,6 +2252,18 @@ prep_stdio(f, mode, klass)
|
||||||
return (VALUE)io;
|
return (VALUE)io;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static VALUE
|
||||||
|
prep_path(io, path)
|
||||||
|
VALUE io;
|
||||||
|
char *path;
|
||||||
|
{
|
||||||
|
OpenFile *fptr;
|
||||||
|
|
||||||
|
GetOpenFile(io, fptr);
|
||||||
|
if (fptr->path) rb_bug("illegal prep_path() call");
|
||||||
|
fptr->path = strdup(path);
|
||||||
|
}
|
||||||
|
|
||||||
static VALUE
|
static VALUE
|
||||||
rb_io_s_new(argc, argv, klass)
|
rb_io_s_new(argc, argv, klass)
|
||||||
int argc;
|
int argc;
|
||||||
|
@ -2360,6 +2380,7 @@ next_argv()
|
||||||
else {
|
else {
|
||||||
next_p = -1;
|
next_p = -1;
|
||||||
current_file = rb_stdin;
|
current_file = rb_stdin;
|
||||||
|
filename = rb_str_new2("-");
|
||||||
}
|
}
|
||||||
init_p = 1;
|
init_p = 1;
|
||||||
first_p = 0;
|
first_p = 0;
|
||||||
|
@ -2375,6 +2396,7 @@ next_argv()
|
||||||
if (strlen(fn) == 1 && fn[0] == '-') {
|
if (strlen(fn) == 1 && fn[0] == '-') {
|
||||||
current_file = rb_stdin;
|
current_file = rb_stdin;
|
||||||
if (ruby_inplace_mode) {
|
if (ruby_inplace_mode) {
|
||||||
|
rb_warn("Can't do inplace edit for stdio");
|
||||||
rb_defout = rb_stdout;
|
rb_defout = rb_stdout;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2392,12 +2414,12 @@ next_argv()
|
||||||
fstat(fileno(fr), &st);
|
fstat(fileno(fr), &st);
|
||||||
if (*ruby_inplace_mode) {
|
if (*ruby_inplace_mode) {
|
||||||
str = rb_str_new2(fn);
|
str = rb_str_new2(fn);
|
||||||
#if defined(MSDOS) || defined(__CYGWIN__) || defined(NT)
|
#ifdef NO_LONG_FNAME
|
||||||
ruby_add_suffix(str, ruby_inplace_mode);
|
ruby_add_suffix(str, ruby_inplace_mode);
|
||||||
#else
|
#else
|
||||||
rb_str_cat2(str, ruby_inplace_mode);
|
rb_str_cat2(str, ruby_inplace_mode);
|
||||||
#endif
|
#endif
|
||||||
#if defined(MSDOS) || defined(__BOW__) || defined(__CYGWIN__) || defined(NT) || defined(__human68k__) || defined(__EMX__)
|
#ifdef NO_SAFE_RENAME
|
||||||
(void)fclose(fr);
|
(void)fclose(fr);
|
||||||
(void)unlink(RSTRING(str)->ptr);
|
(void)unlink(RSTRING(str)->ptr);
|
||||||
(void)rename(fn, RSTRING(str)->ptr);
|
(void)rename(fn, RSTRING(str)->ptr);
|
||||||
|
@ -2412,19 +2434,19 @@ next_argv()
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
#if !defined(MSDOS) && !defined(__BOW__) && !defined(__CYGWIN__) && !defined(NT) && !defined(__human68k__)
|
#ifdef NO_SAFE_RENAME
|
||||||
|
rb_fatal("Can't do inplace edit without backup");
|
||||||
|
#else
|
||||||
if (unlink(fn) < 0) {
|
if (unlink(fn) < 0) {
|
||||||
rb_warn("Can't remove %s: %s, skipping file",
|
rb_warn("Can't remove %s: %s, skipping file",
|
||||||
fn, strerror(errno));
|
fn, strerror(errno));
|
||||||
fclose(fr);
|
fclose(fr);
|
||||||
goto retry;
|
goto retry;
|
||||||
}
|
}
|
||||||
#else
|
|
||||||
rb_fatal("Can't do inplace edit without backup");
|
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
fw = rb_fopen(fn, "w");
|
fw = rb_fopen(fn, "w");
|
||||||
#if !defined(MSDOS) && !defined(__CYGWIN__) && !(NT) && !defined(__human68k__) && !defined(__BEOS__) && !defined(__EMX__)
|
#ifndef NO_SAFE_RENAME
|
||||||
fstat(fileno(fw), &st2);
|
fstat(fileno(fw), &st2);
|
||||||
fchmod(fileno(fw), st.st_mode);
|
fchmod(fileno(fw), st.st_mode);
|
||||||
if (st.st_uid!=st2.st_uid || st.st_gid!=st2.st_gid) {
|
if (st.st_uid!=st2.st_uid || st.st_gid!=st2.st_gid) {
|
||||||
|
@ -2432,8 +2454,10 @@ next_argv()
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
rb_defout = prep_stdio(fw, FMODE_WRITABLE, rb_cFile);
|
rb_defout = prep_stdio(fw, FMODE_WRITABLE, rb_cFile);
|
||||||
|
prep_path(rb_defout, fn);
|
||||||
}
|
}
|
||||||
current_file = prep_stdio(fr, FMODE_READABLE, rb_cFile);
|
current_file = prep_stdio(fr, FMODE_READABLE, rb_cFile);
|
||||||
|
prep_path(current_file, fn);
|
||||||
}
|
}
|
||||||
if (binmode) rb_io_binmode(current_file);
|
if (binmode) rb_io_binmode(current_file);
|
||||||
}
|
}
|
||||||
|
@ -2557,18 +2581,6 @@ rb_f_readlines(argc, argv)
|
||||||
return ary;
|
return ary;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
|
||||||
rb_str_setter(val, id, var)
|
|
||||||
VALUE val;
|
|
||||||
ID id;
|
|
||||||
VALUE *var;
|
|
||||||
{
|
|
||||||
if (!NIL_P(val) && TYPE(val) != T_STRING) {
|
|
||||||
rb_raise(rb_eTypeError, "value of %s must be String", rb_id2name(id));
|
|
||||||
}
|
|
||||||
*var = val;
|
|
||||||
}
|
|
||||||
|
|
||||||
static VALUE
|
static VALUE
|
||||||
rb_f_backquote(obj, str)
|
rb_f_backquote(obj, str)
|
||||||
VALUE obj, str;
|
VALUE obj, str;
|
||||||
|
|
2
regex.c
2
regex.c
|
@ -3550,7 +3550,7 @@ re_match(bufp, string_arg, size, pos, regs)
|
||||||
stacke = &stackb[MAX_NUM_FAILURE_ITEMS * NFAILURES];
|
stacke = &stackb[MAX_NUM_FAILURE_ITEMS * NFAILURES];
|
||||||
|
|
||||||
#ifdef DEBUG_REGEX
|
#ifdef DEBUG_REGEX
|
||||||
fprintf(stderr, "Entering re_match(%s%s)\n", string1_arg, string2_arg);
|
fprintf(stderr, "Entering re_match(%s)\n", string_arg);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Initialize subexpression text positions to -1 to mark ones that no
|
/* Initialize subexpression text positions to -1 to mark ones that no
|
||||||
|
|
12
string.c
12
string.c
|
@ -2753,6 +2753,18 @@ rb_str_center(str, w)
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
rb_str_setter(val, id, var)
|
||||||
|
VALUE val;
|
||||||
|
ID id;
|
||||||
|
VALUE *var;
|
||||||
|
{
|
||||||
|
if (!NIL_P(val) && TYPE(val) != T_STRING) {
|
||||||
|
rb_raise(rb_eTypeError, "value of %s must be String", rb_id2name(id));
|
||||||
|
}
|
||||||
|
*var = val;
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
Init_String()
|
Init_String()
|
||||||
{
|
{
|
||||||
|
|
43
variable.c
43
variable.c
|
@ -1228,11 +1228,12 @@ rb_const_defined(klass, id)
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
rb_mod_av_set(klass, id, val, dest)
|
mod_av_set(klass, id, val, dest, once)
|
||||||
VALUE klass;
|
VALUE klass;
|
||||||
ID id;
|
ID id;
|
||||||
VALUE val;
|
VALUE val;
|
||||||
char *dest;
|
char *dest;
|
||||||
|
int once;
|
||||||
{
|
{
|
||||||
if (!OBJ_TAINTED(klass) && rb_safe_level() >= 4)
|
if (!OBJ_TAINTED(klass) && rb_safe_level() >= 4)
|
||||||
rb_raise(rb_eSecurityError, "Insecure: can't set %s", dest);
|
rb_raise(rb_eSecurityError, "Insecure: can't set %s", dest);
|
||||||
|
@ -1240,7 +1241,7 @@ rb_mod_av_set(klass, id, val, dest)
|
||||||
if (!RCLASS(klass)->iv_tbl) {
|
if (!RCLASS(klass)->iv_tbl) {
|
||||||
RCLASS(klass)->iv_tbl = st_init_numtable();
|
RCLASS(klass)->iv_tbl = st_init_numtable();
|
||||||
}
|
}
|
||||||
else if (st_lookup(RCLASS(klass)->iv_tbl, id, 0)) {
|
else if (once && st_lookup(RCLASS(klass)->iv_tbl, id, 0)) {
|
||||||
rb_warn("already initialized %s %s", dest, rb_id2name(id));
|
rb_warn("already initialized %s %s", dest, rb_id2name(id));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1253,7 +1254,7 @@ rb_const_set(klass, id, val)
|
||||||
ID id;
|
ID id;
|
||||||
VALUE val;
|
VALUE val;
|
||||||
{
|
{
|
||||||
rb_mod_av_set(klass, id, val, "constant");
|
mod_av_set(klass, id, val, "constant", Qtrue);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -1323,18 +1324,6 @@ rb_define_global_const(name, val)
|
||||||
rb_define_const(rb_cObject, name, val);
|
rb_define_const(rb_cObject, name, val);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
|
||||||
rb_cvar_declare(klass, id, val)
|
|
||||||
VALUE klass;
|
|
||||||
ID id;
|
|
||||||
VALUE val;
|
|
||||||
{
|
|
||||||
if (FL_TEST(klass, FL_SINGLETON)) {
|
|
||||||
klass = rb_iv_get(klass, "__attached__");
|
|
||||||
}
|
|
||||||
rb_mod_av_set(klass, id, val, "class variable");
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
void
|
||||||
rb_cvar_set(klass, id, val)
|
rb_cvar_set(klass, id, val)
|
||||||
VALUE klass;
|
VALUE klass;
|
||||||
|
@ -1345,9 +1334,6 @@ rb_cvar_set(klass, id, val)
|
||||||
|
|
||||||
if (!OBJ_TAINTED(klass) && rb_safe_level() >= 4)
|
if (!OBJ_TAINTED(klass) && rb_safe_level() >= 4)
|
||||||
rb_raise(rb_eSecurityError, "Insecure: can't modify class variable");
|
rb_raise(rb_eSecurityError, "Insecure: can't modify class variable");
|
||||||
if (FL_TEST(klass, FL_SINGLETON)) {
|
|
||||||
klass = rb_iv_get(klass, "__attached__");
|
|
||||||
}
|
|
||||||
tmp = klass;
|
tmp = klass;
|
||||||
while (tmp) {
|
while (tmp) {
|
||||||
if (RCLASS(tmp)->iv_tbl && st_lookup(RCLASS(tmp)->iv_tbl,id,0)) {
|
if (RCLASS(tmp)->iv_tbl && st_lookup(RCLASS(tmp)->iv_tbl,id,0)) {
|
||||||
|
@ -1357,7 +1343,17 @@ rb_cvar_set(klass, id, val)
|
||||||
tmp = RCLASS(tmp)->super;
|
tmp = RCLASS(tmp)->super;
|
||||||
}
|
}
|
||||||
|
|
||||||
rb_raise(rb_eNameError,"uninitialized class variable %s",rb_id2name(id));
|
rb_raise(rb_eNameError,"uninitialized class variable %s in %s",
|
||||||
|
rb_id2name(id), rb_class2name(klass));
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
rb_cvar_declare(klass, id, val)
|
||||||
|
VALUE klass;
|
||||||
|
ID id;
|
||||||
|
VALUE val;
|
||||||
|
{
|
||||||
|
mod_av_set(klass, id, val, "class variable", Qfalse);
|
||||||
}
|
}
|
||||||
|
|
||||||
VALUE
|
VALUE
|
||||||
|
@ -1368,9 +1364,6 @@ rb_cvar_get(klass, id)
|
||||||
VALUE value;
|
VALUE value;
|
||||||
VALUE tmp;
|
VALUE tmp;
|
||||||
|
|
||||||
if (FL_TEST(klass, FL_SINGLETON)) {
|
|
||||||
klass = rb_iv_get(klass, "__attached__");
|
|
||||||
}
|
|
||||||
tmp = klass;
|
tmp = klass;
|
||||||
while (tmp) {
|
while (tmp) {
|
||||||
if (RCLASS(tmp)->iv_tbl && st_lookup(RCLASS(tmp)->iv_tbl,id,&value)) {
|
if (RCLASS(tmp)->iv_tbl && st_lookup(RCLASS(tmp)->iv_tbl,id,&value)) {
|
||||||
|
@ -1379,7 +1372,8 @@ rb_cvar_get(klass, id)
|
||||||
tmp = RCLASS(tmp)->super;
|
tmp = RCLASS(tmp)->super;
|
||||||
}
|
}
|
||||||
|
|
||||||
rb_raise(rb_eNameError,"uninitialized class variable %s",rb_id2name(id));
|
rb_raise(rb_eNameError,"uninitialized class variable %s in %s",
|
||||||
|
rb_id2name(id), rb_class2name(klass));
|
||||||
return Qnil; /* not reached */
|
return Qnil; /* not reached */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1390,9 +1384,6 @@ rb_cvar_defined(klass, id)
|
||||||
{
|
{
|
||||||
VALUE tmp;
|
VALUE tmp;
|
||||||
|
|
||||||
if (FL_TEST(klass, FL_SINGLETON)) {
|
|
||||||
klass = rb_iv_get(klass, "__attached__");
|
|
||||||
}
|
|
||||||
tmp = klass;
|
tmp = klass;
|
||||||
while (tmp) {
|
while (tmp) {
|
||||||
if (RCLASS(tmp)->iv_tbl && st_lookup(RCLASS(tmp)->iv_tbl,id,0)) {
|
if (RCLASS(tmp)->iv_tbl && st_lookup(RCLASS(tmp)->iv_tbl,id,0)) {
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
#define RUBY_VERSION "1.5.5"
|
#define RUBY_VERSION "1.6.0"
|
||||||
#define RUBY_RELEASE_DATE "2000-08-24"
|
#define RUBY_RELEASE_DATE "2000-08-24"
|
||||||
#define RUBY_VERSION_CODE 155
|
#define RUBY_VERSION_CODE 155
|
||||||
#define RUBY_RELEASE_CODE 20000824
|
#define RUBY_RELEASE_CODE 20000824
|
||||||
|
|
Loading…
Reference in a new issue