mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* re.c (rb_reg_expr_str): should treat backslash specially in
escaping. * io.c: complete off_t handling; missing argument for fptr_finalize(); polished rb_scan_args call. * dir.c: wrap multi-statment macro by do { } while (0) * eval.c, numeric,c, sprintf.c, util.c: ditto. * bignum.c (rb_big_eq): check `y == x' if y is neither Fixnum, Bignum, nor Float. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2382 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
8a7b08bb78
commit
e63a990141
23 changed files with 146 additions and 98 deletions
21
ChangeLog
21
ChangeLog
|
@ -7,10 +7,31 @@ Wed Apr 17 23:55:34 2002 Akinori MUSHA <knu@iDaemons.org>
|
|||
* ext/Setup*, ext/bigfloat/*: Back out the import of BigFloat in
|
||||
favor of its forthcoming successor, BigDecimal.
|
||||
|
||||
Wed Apr 17 16:53:33 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
|
||||
|
||||
* re.c (rb_reg_expr_str): should treat backslash specially in
|
||||
escaping.
|
||||
|
||||
Wed Apr 17 08:16:41 2002 Michal Rokos <m.rokos@sh.cvut.cz>
|
||||
|
||||
* io.c: complete off_t handling; missing argument for
|
||||
fptr_finalize(); polished rb_scan_args call.
|
||||
|
||||
Wed Apr 17 00:01:59 2002 Michal Rokos <m.rokos@sh.cvut.cz>
|
||||
|
||||
* dir.c: wrap multi-statment macro by do { } while (0)
|
||||
|
||||
* eval.c, numeric,c, sprintf.c, util.c: ditto.
|
||||
|
||||
Tue Apr 16 08:59:50 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
|
||||
|
||||
* eval.c (assign): convert mrhs to mvalue.
|
||||
|
||||
Mon Apr 15 18:12:57 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
|
||||
|
||||
* bignum.c (rb_big_eq): check `y == x' if y is neither Fixnum,
|
||||
Bignum, nor Float.
|
||||
|
||||
Mon Apr 15 09:27:31 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
|
||||
|
||||
* pack.c (pack_unpack): should treat 'U' in character unit, not in
|
||||
|
|
2
array.c
2
array.c
|
@ -173,7 +173,7 @@ rb_ary_new3(n, va_alist)
|
|||
VALUE
|
||||
rb_ary_new4(n, elts)
|
||||
long n;
|
||||
VALUE *elts;
|
||||
const VALUE *elts;
|
||||
{
|
||||
VALUE ary;
|
||||
|
||||
|
|
7
bignum.c
7
bignum.c
|
@ -861,9 +861,12 @@ rb_big_eq(x, y)
|
|||
case T_BIGNUM:
|
||||
break;
|
||||
case T_FLOAT:
|
||||
return (rb_big2dbl(x) == RFLOAT(y)->value)?Qtrue:Qfalse;
|
||||
if (rb_big2dbl(x) == RFLOAT(y)->value)
|
||||
return Qtrue;
|
||||
else
|
||||
return Qfalse;
|
||||
default:
|
||||
return Qfalse;
|
||||
return rb_equal(y, x);
|
||||
}
|
||||
if (RBIGNUM(x)->sign != RBIGNUM(y)->sign) return Qfalse;
|
||||
if (RBIGNUM(x)->len != RBIGNUM(y)->len) return Qfalse;
|
||||
|
|
4
class.c
4
class.c
|
@ -772,11 +772,11 @@ rb_define_attr(klass, name, read, write)
|
|||
|
||||
int
|
||||
#ifdef HAVE_STDARG_PROTOTYPES
|
||||
rb_scan_args(int argc, VALUE *argv, const char *fmt, ...)
|
||||
rb_scan_args(int argc, const VALUE *argv, const char *fmt, ...)
|
||||
#else
|
||||
rb_scan_args(argc, argv, fmt, va_alist)
|
||||
int argc;
|
||||
VALUE *argv;
|
||||
const VALUE *argv;
|
||||
const char *fmt;
|
||||
va_dcl
|
||||
#endif
|
||||
|
|
2
compar.c
2
compar.c
|
@ -6,7 +6,7 @@
|
|||
$Date$
|
||||
created at: Thu Aug 26 14:39:48 JST 1993
|
||||
|
||||
Copyright (C) 1993-2001 Yukihiro Matsumoto
|
||||
Copyright (C) 1993-2002 Yukihiro Matsumoto
|
||||
|
||||
**********************************************************************/
|
||||
|
||||
|
|
6
dir.c
6
dir.c
|
@ -6,7 +6,7 @@
|
|||
$Date$
|
||||
created at: Wed Jan 5 09:51:01 JST 1994
|
||||
|
||||
Copyright (C) 1993-2001 Yukihiro Matsumoto
|
||||
Copyright (C) 1993-2002 Yukihiro Matsumoto
|
||||
Copyright (C) 2000 Network Applied Communication Laboratory, Inc.
|
||||
Copyright (C) 2000 Information-technology Promotion Agency, Japan
|
||||
|
||||
|
@ -313,10 +313,10 @@ dir_closed()
|
|||
rb_raise(rb_eIOError, "closed directory");
|
||||
}
|
||||
|
||||
#define GetDIR(obj, dirp) {\
|
||||
#define GetDIR(obj, dirp) do {\
|
||||
Data_Get_Struct(obj, struct dir_data, dirp);\
|
||||
if (dirp->dir == NULL) dir_closed();\
|
||||
}
|
||||
} while (0)
|
||||
|
||||
static VALUE
|
||||
dir_path(dir)
|
||||
|
|
10
enum.c
10
enum.c
|
@ -6,7 +6,7 @@
|
|||
$Date$
|
||||
created at: Fri Oct 1 15:15:19 JST 1993
|
||||
|
||||
Copyright (C) 1993-2001 Yukihiro Matsumoto
|
||||
Copyright (C) 1993-2002 Yukihiro Matsumoto
|
||||
|
||||
**********************************************************************/
|
||||
|
||||
|
@ -172,12 +172,12 @@ static VALUE
|
|||
enum_collect(obj)
|
||||
VALUE obj;
|
||||
{
|
||||
VALUE tmp;
|
||||
VALUE ary;
|
||||
|
||||
tmp = rb_ary_new();
|
||||
rb_iterate(rb_each, obj, rb_block_given_p() ? collect_i : collect_all, tmp);
|
||||
ary = rb_ary_new();
|
||||
rb_iterate(rb_each, obj, rb_block_given_p() ? collect_i : collect_all, ary);
|
||||
|
||||
return tmp;
|
||||
return ary;
|
||||
}
|
||||
|
||||
static VALUE
|
||||
|
|
44
eval.c
44
eval.c
|
@ -518,12 +518,13 @@ static struct SCOPE *top_scope;
|
|||
_frame.argc = 0; \
|
||||
_frame.argv = 0; \
|
||||
_frame.flags = FRAME_ALLOCA; \
|
||||
ruby_frame = &_frame; \
|
||||
ruby_frame = &_frame
|
||||
|
||||
#define POP_FRAME() \
|
||||
ruby_sourcefile = _frame.file; \
|
||||
ruby_sourceline = _frame.line; \
|
||||
ruby_frame = _frame.prev; }
|
||||
ruby_frame = _frame.prev; \
|
||||
}
|
||||
|
||||
struct BLOCKTAG {
|
||||
struct RBasic super;
|
||||
|
@ -581,7 +582,7 @@ new_blktag()
|
|||
_block.flags = BLOCK_D_SCOPE; \
|
||||
_block.dyna_vars = ruby_dyna_vars; \
|
||||
_block.wrapper = ruby_wrapper; \
|
||||
ruby_block = &_block;
|
||||
ruby_block = &_block
|
||||
|
||||
#define POP_BLOCK() \
|
||||
if (_block.tag->flags & (BLOCK_DYNAMIC)) \
|
||||
|
@ -595,7 +596,7 @@ struct RVarmap *ruby_dyna_vars;
|
|||
#define PUSH_VARS() { \
|
||||
struct RVarmap * volatile _old; \
|
||||
_old = ruby_dyna_vars; \
|
||||
ruby_dyna_vars = 0;
|
||||
ruby_dyna_vars = 0
|
||||
|
||||
#define POP_VARS() \
|
||||
if (_old && (ruby_scope->flags & SCOPE_DONT_RECYCLE)) {\
|
||||
|
@ -750,7 +751,7 @@ static struct iter *ruby_iter;
|
|||
struct iter _iter; \
|
||||
_iter.prev = ruby_iter; \
|
||||
_iter.iter = (i); \
|
||||
ruby_iter = &_iter; \
|
||||
ruby_iter = &_iter
|
||||
|
||||
#define POP_ITER() \
|
||||
ruby_iter = _iter.prev; \
|
||||
|
@ -777,7 +778,7 @@ static struct tag *prot_tag;
|
|||
_tag.scope = ruby_scope; \
|
||||
_tag.tag = ptag; \
|
||||
_tag.dst = 0; \
|
||||
prot_tag = &_tag;
|
||||
prot_tag = &_tag
|
||||
|
||||
#define PROT_NONE 0
|
||||
#define PROT_FUNC -1
|
||||
|
@ -785,11 +786,11 @@ static struct tag *prot_tag;
|
|||
|
||||
#define EXEC_TAG() setjmp(prot_tag->buf)
|
||||
|
||||
#define JUMP_TAG(st) { \
|
||||
#define JUMP_TAG(st) do { \
|
||||
ruby_frame = prot_tag->frame; \
|
||||
ruby_iter = prot_tag->iter; \
|
||||
longjmp(prot_tag->buf,(st)); \
|
||||
}
|
||||
} while (0)
|
||||
|
||||
#define POP_TAG() \
|
||||
if (_tag.prev) \
|
||||
|
@ -815,9 +816,10 @@ VALUE ruby_class;
|
|||
static VALUE ruby_wrapper; /* security wrapper */
|
||||
|
||||
#define PUSH_CLASS() { \
|
||||
VALUE _class = ruby_class; \
|
||||
VALUE _class = ruby_class
|
||||
|
||||
#define POP_CLASS() ruby_class = _class; }
|
||||
#define POP_CLASS() ruby_class = _class; \
|
||||
}
|
||||
|
||||
static NODE *ruby_cref = 0;
|
||||
static NODE *top_cref;
|
||||
|
@ -834,7 +836,7 @@ static NODE *top_cref;
|
|||
_scope->flags = 0; \
|
||||
_old = ruby_scope; \
|
||||
ruby_scope = _scope; \
|
||||
scope_vmode = SCOPE_PUBLIC;
|
||||
scope_vmode = SCOPE_PUBLIC
|
||||
|
||||
typedef struct thread * rb_thread_t;
|
||||
static rb_thread_t curr_thread = 0;
|
||||
|
@ -863,7 +865,7 @@ static VALUE eval _((VALUE,VALUE,VALUE,char*,int));
|
|||
static NODE *compile _((VALUE, char*, int));
|
||||
|
||||
static VALUE rb_yield_0 _((VALUE, VALUE, VALUE, int));
|
||||
static VALUE rb_call _((VALUE,VALUE,ID,int,VALUE*,int));
|
||||
static VALUE rb_call _((VALUE,VALUE,ID,int,const VALUE*,int));
|
||||
static VALUE module_setup _((VALUE,NODE*));
|
||||
|
||||
static VALUE massign _((VALUE,NODE*,VALUE,int));
|
||||
|
@ -1150,7 +1152,7 @@ ruby_options(argc, argv)
|
|||
{
|
||||
int state;
|
||||
|
||||
PUSH_TAG(PROT_NONE)
|
||||
PUSH_TAG(PROT_NONE);
|
||||
if ((state = EXEC_TAG()) == 0) {
|
||||
ruby_process_options(argc, argv);
|
||||
}
|
||||
|
@ -1714,7 +1716,7 @@ copy_node_scope(node, rval)
|
|||
# define TMP_ALLOC(n) ALLOCA_N(VALUE,n)
|
||||
#endif
|
||||
|
||||
#define SETUP_ARGS(anode) {\
|
||||
#define SETUP_ARGS(anode) do {\
|
||||
NODE *n = anode;\
|
||||
if (!n) {\
|
||||
argc = 0;\
|
||||
|
@ -1752,14 +1754,14 @@ copy_node_scope(node, rval)
|
|||
ruby_sourcefile = file;\
|
||||
ruby_sourceline = line;\
|
||||
}\
|
||||
}
|
||||
} while (0)
|
||||
|
||||
#define BEGIN_CALLARGS {\
|
||||
struct BLOCK *tmp_block = ruby_block;\
|
||||
if (ruby_iter->iter == ITER_PRE) {\
|
||||
ruby_block = ruby_block->prev;\
|
||||
}\
|
||||
PUSH_ITER(ITER_NOT);
|
||||
PUSH_ITER(ITER_NOT)
|
||||
|
||||
#define END_CALLARGS \
|
||||
ruby_block = tmp_block;\
|
||||
|
@ -4651,7 +4653,7 @@ rb_call(klass, recv, mid, argc, argv, scope)
|
|||
VALUE klass, recv;
|
||||
ID mid;
|
||||
int argc; /* OK */
|
||||
VALUE *argv; /* OK */
|
||||
const VALUE *argv; /* OK */
|
||||
int scope;
|
||||
{
|
||||
NODE *body; /* OK */
|
||||
|
@ -4780,7 +4782,7 @@ rb_funcall2(recv, mid, argc, argv)
|
|||
VALUE recv;
|
||||
ID mid;
|
||||
int argc;
|
||||
VALUE *argv;
|
||||
const VALUE *argv;
|
||||
{
|
||||
return rb_call(CLASS_OF(recv), recv, mid, argc, argv, 1);
|
||||
}
|
||||
|
@ -4790,7 +4792,7 @@ rb_funcall3(recv, mid, argc, argv)
|
|||
VALUE recv;
|
||||
ID mid;
|
||||
int argc;
|
||||
VALUE *argv;
|
||||
const VALUE *argv;
|
||||
{
|
||||
return rb_call(CLASS_OF(recv), recv, mid, argc, argv, 0);
|
||||
}
|
||||
|
@ -4798,7 +4800,7 @@ rb_funcall3(recv, mid, argc, argv)
|
|||
VALUE
|
||||
rb_call_super(argc, argv)
|
||||
int argc;
|
||||
VALUE *argv;
|
||||
const VALUE *argv;
|
||||
{
|
||||
VALUE result;
|
||||
|
||||
|
@ -8372,7 +8374,7 @@ rb_thread_abort_exc_set(thread, val)
|
|||
th->priority = 0;\
|
||||
th->gid = 1;\
|
||||
th->locals = 0;\
|
||||
} while(0)
|
||||
} while (0)
|
||||
|
||||
static rb_thread_t
|
||||
rb_thread_alloc(klass)
|
||||
|
|
8
file.c
8
file.c
|
@ -1678,7 +1678,7 @@ rb_file_s_truncate(klass, path, len)
|
|||
SafeStringValue(path);
|
||||
|
||||
#ifdef HAVE_TRUNCATE
|
||||
if (truncate(RSTRING(path)->ptr, NUM2INT(len)) < 0)
|
||||
if (truncate(RSTRING(path)->ptr, NUM2OFFT(len)) < 0)
|
||||
rb_sys_fail(RSTRING(path)->ptr);
|
||||
#else
|
||||
# ifdef HAVE_CHSIZE
|
||||
|
@ -1694,7 +1694,7 @@ rb_file_s_truncate(klass, path, len)
|
|||
rb_sys_fail(RSTRING(path)->ptr);
|
||||
}
|
||||
# endif
|
||||
if (chsize(tmpfd, NUM2INT(len)) < 0) {
|
||||
if (chsize(tmpfd, NUM2OFFT(len)) < 0) {
|
||||
close(tmpfd);
|
||||
rb_sys_fail(RSTRING(path)->ptr);
|
||||
}
|
||||
|
@ -1719,11 +1719,11 @@ rb_file_truncate(obj, len)
|
|||
rb_raise(rb_eIOError, "not opened for writing");
|
||||
}
|
||||
#ifdef HAVE_TRUNCATE
|
||||
if (ftruncate(fileno(fptr->f), NUM2INT(len)) < 0)
|
||||
if (ftruncate(fileno(fptr->f), NUM2OFFT(len)) < 0)
|
||||
rb_sys_fail(fptr->path);
|
||||
#else
|
||||
# ifdef HAVE_CHSIZE
|
||||
if (chsize(fileno(fptr->f), NUM2INT(len)) < 0)
|
||||
if (chsize(fileno(fptr->f), NUM2OFFT(len)) < 0)
|
||||
rb_sys_fail(fptr->path);
|
||||
# else
|
||||
rb_notimplement();
|
||||
|
|
2
inits.c
2
inits.c
|
@ -6,7 +6,7 @@
|
|||
$Date$
|
||||
created at: Tue Dec 28 16:01:58 JST 1993
|
||||
|
||||
Copyright (C) 1993-2001 Yukihiro Matsumoto
|
||||
Copyright (C) 1993-2002 Yukihiro Matsumoto
|
||||
|
||||
**********************************************************************/
|
||||
|
||||
|
|
24
intern.h
24
intern.h
|
@ -23,7 +23,7 @@ VALUE rb_assoc_new _((VALUE, VALUE));
|
|||
VALUE rb_ary_new _((void));
|
||||
VALUE rb_ary_new2 _((long));
|
||||
VALUE rb_ary_new3 __((long,...));
|
||||
VALUE rb_ary_new4 _((long, VALUE *));
|
||||
VALUE rb_ary_new4 _((long, const VALUE *));
|
||||
VALUE rb_ary_freeze _((VALUE));
|
||||
VALUE rb_ary_aref _((int, VALUE*, VALUE));
|
||||
void rb_ary_store _((VALUE, long, VALUE));
|
||||
|
@ -204,7 +204,7 @@ VALUE rb_find_file _((VALUE));
|
|||
/* gc.c */
|
||||
int ruby_stack_check _((void));
|
||||
int ruby_stack_length _((VALUE**));
|
||||
char *rb_source_filename _((const char *));
|
||||
char *rb_source_filename _((const char*));
|
||||
void rb_gc_mark_locations _((VALUE*, VALUE*));
|
||||
void rb_mark_tbl _((struct st_table*));
|
||||
void rb_mark_hash _((struct st_table*));
|
||||
|
@ -224,7 +224,7 @@ VALUE rb_hash_aref _((VALUE, VALUE));
|
|||
VALUE rb_hash_aset _((VALUE, VALUE, VALUE));
|
||||
VALUE rb_hash_delete_if _((VALUE));
|
||||
VALUE rb_hash_delete _((VALUE,VALUE));
|
||||
int rb_path_check _((char *));
|
||||
int rb_path_check _((char*));
|
||||
int rb_env_path_tainted _((void));
|
||||
/* io.c */
|
||||
EXTERN VALUE rb_fs;
|
||||
|
@ -278,7 +278,7 @@ VALUE rb_Integer _((VALUE));
|
|||
VALUE rb_Float _((VALUE));
|
||||
VALUE rb_String _((VALUE));
|
||||
VALUE rb_Array _((VALUE));
|
||||
double rb_cstr_to_dbl _((const char *, int));
|
||||
double rb_cstr_to_dbl _((const char*, int));
|
||||
double rb_str_to_dbl _((VALUE, int));
|
||||
/* parse.y */
|
||||
EXTERN int ruby_sourceline;
|
||||
|
@ -354,14 +354,14 @@ VALUE rb_str_new _((const char*, long));
|
|||
VALUE rb_str_new2 _((const char*));
|
||||
VALUE rb_str_new3 _((VALUE));
|
||||
VALUE rb_str_new4 _((VALUE));
|
||||
VALUE rb_str_new5 _((VALUE, const char *, long));
|
||||
VALUE rb_str_new5 _((VALUE, const char*, long));
|
||||
VALUE rb_tainted_str_new _((const char*, long));
|
||||
VALUE rb_tainted_str_new2 _((const char*));
|
||||
VALUE rb_str_buf_new _((long));
|
||||
VALUE rb_str_buf_new2 _((const char*));
|
||||
VALUE rb_str_buf_append _((VALUE, VALUE));
|
||||
VALUE rb_str_buf_cat _((VALUE, const char *, long));
|
||||
VALUE rb_str_buf_cat2 _((VALUE, const char *));
|
||||
VALUE rb_str_buf_cat _((VALUE, const char*, long));
|
||||
VALUE rb_str_buf_cat2 _((VALUE, const char*));
|
||||
VALUE rb_obj_as_string _((VALUE));
|
||||
VALUE rb_str_dup _((VALUE));
|
||||
VALUE rb_str_dup_frozen _((VALUE));
|
||||
|
@ -415,8 +415,8 @@ void rb_free_generic_ivar _((VALUE));
|
|||
VALUE rb_ivar_get _((VALUE, ID));
|
||||
VALUE rb_ivar_set _((VALUE, ID, VALUE));
|
||||
VALUE rb_ivar_defined _((VALUE, ID));
|
||||
VALUE rb_iv_set _((VALUE, const char *, VALUE));
|
||||
VALUE rb_iv_get _((VALUE, const char *));
|
||||
VALUE rb_iv_set _((VALUE, const char*, VALUE));
|
||||
VALUE rb_iv_get _((VALUE, const char*));
|
||||
VALUE rb_obj_instance_variables _((VALUE));
|
||||
VALUE rb_obj_remove_instance_variable _((VALUE, VALUE));
|
||||
void *rb_mod_const_at _((VALUE, void*));
|
||||
|
@ -436,9 +436,9 @@ void rb_autoload_load _((ID));
|
|||
VALUE rb_cvar_defined _((VALUE, ID));
|
||||
void rb_cvar_set _((VALUE, ID, VALUE, int));
|
||||
VALUE rb_cvar_get _((VALUE, ID));
|
||||
void rb_cv_set _((VALUE, const char *, VALUE));
|
||||
VALUE rb_cv_get _((VALUE, const char *));
|
||||
void rb_define_class_variable _((VALUE, const char *, VALUE));
|
||||
void rb_cv_set _((VALUE, const char*, VALUE));
|
||||
VALUE rb_cv_get _((VALUE, const char*));
|
||||
void rb_define_class_variable _((VALUE, const char*, VALUE));
|
||||
VALUE rb_mod_class_variables _((VALUE));
|
||||
VALUE rb_mod_remove_cvar _((VALUE, VALUE));
|
||||
/* version.c */
|
||||
|
|
23
io.c
23
io.c
|
@ -364,7 +364,7 @@ rb_io_seek(io, offset, whence)
|
|||
int whence;
|
||||
{
|
||||
OpenFile *fptr;
|
||||
long pos;
|
||||
off_t pos;
|
||||
|
||||
GetOpenFile(io, fptr);
|
||||
pos = fseeko(fptr->f, NUM2OFFT(offset), whence);
|
||||
|
@ -381,11 +381,11 @@ rb_io_seek_m(argc, argv, io)
|
|||
VALUE io;
|
||||
{
|
||||
VALUE offset, ptrname;
|
||||
int whence;
|
||||
int whence = SEEK_SET;
|
||||
|
||||
rb_scan_args(argc, argv, "11", &offset, &ptrname);
|
||||
if (argc == 1) whence = SEEK_SET;
|
||||
else whence = NUM2INT(ptrname);
|
||||
if (rb_scan_args(argc, argv, "11", &offset, &ptrname) == 2) {
|
||||
whence = NUM2INT(ptrname);
|
||||
}
|
||||
|
||||
return rb_io_seek(io, offset, whence);
|
||||
}
|
||||
|
@ -395,14 +395,14 @@ rb_io_set_pos(io, offset)
|
|||
VALUE io, offset;
|
||||
{
|
||||
OpenFile *fptr;
|
||||
long pos;
|
||||
off_t pos;
|
||||
|
||||
GetOpenFile(io, fptr);
|
||||
pos = fseeko(fptr->f, NUM2OFFT(offset), SEEK_SET);
|
||||
if (pos != 0) rb_sys_fail(fptr->path);
|
||||
clearerr(fptr->f);
|
||||
|
||||
return INT2NUM(pos);
|
||||
return OFFT2NUM(pos);
|
||||
}
|
||||
|
||||
static VALUE
|
||||
|
@ -1161,6 +1161,7 @@ rb_io_isatty(io)
|
|||
static void
|
||||
fptr_finalize(fptr, fin)
|
||||
OpenFile *fptr;
|
||||
int fin;
|
||||
{
|
||||
int n1 = 0, n2 = 0, e = 0, f1, f2 = -1;
|
||||
|
||||
|
@ -1318,13 +1319,13 @@ rb_io_sysseek(argc, argv, io)
|
|||
VALUE io;
|
||||
{
|
||||
VALUE offset, ptrname;
|
||||
int whence;
|
||||
int whence = SEEK_SET;
|
||||
OpenFile *fptr;
|
||||
off_t pos;
|
||||
|
||||
rb_scan_args(argc, argv, "11", &offset, &ptrname);
|
||||
if (argc == 1) whence = SEEK_SET;
|
||||
else whence = NUM2INT(ptrname);
|
||||
if (rb_scan_args(argc, argv, "11", &offset, &ptrname) == 2) {
|
||||
whence = NUM2INT(ptrname);
|
||||
}
|
||||
|
||||
GetOpenFile(io, fptr);
|
||||
if ((fptr->mode & FMODE_READABLE) && READ_DATA_PENDING(fptr->f)) {
|
||||
|
|
2
main.c
2
main.c
|
@ -6,7 +6,7 @@
|
|||
$Date$
|
||||
created at: Fri Aug 19 13:19:58 JST 1994
|
||||
|
||||
Copyright (C) 1993-2001 Yukihiro Matsumoto
|
||||
Copyright (C) 1993-2002 Yukihiro Matsumoto
|
||||
|
||||
**********************************************************************/
|
||||
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
$Date$
|
||||
created at: Thu Apr 27 16:30:01 JST 1995
|
||||
|
||||
Copyright (C) 1993-2001 Yukihiro Matsumoto
|
||||
Copyright (C) 1993-2002 Yukihiro Matsumoto
|
||||
|
||||
**********************************************************************/
|
||||
|
||||
|
|
21
math.c
21
math.c
|
@ -6,7 +6,7 @@
|
|||
$Date$
|
||||
created at: Tue Jan 25 14:12:56 JST 1994
|
||||
|
||||
Copyright (C) 1993-2001 Yukihiro Matsumoto
|
||||
Copyright (C) 1993-2002 Yukihiro Matsumoto
|
||||
|
||||
**********************************************************************/
|
||||
|
||||
|
@ -16,16 +16,17 @@
|
|||
VALUE rb_mMath;
|
||||
|
||||
#define Need_Float(x) (x) = rb_Float(x)
|
||||
#define Need_Float2(x,y) {\
|
||||
#define Need_Float2(x,y) do {\
|
||||
Need_Float(x);\
|
||||
Need_Float(y);\
|
||||
}
|
||||
} while (0)
|
||||
|
||||
static VALUE
|
||||
math_atan2(obj, y, x)
|
||||
VALUE obj, x, y;
|
||||
{
|
||||
Need_Float2(y, x);
|
||||
|
||||
return rb_float_new(atan2(RFLOAT(y)->value, RFLOAT(x)->value));
|
||||
}
|
||||
|
||||
|
@ -85,6 +86,7 @@ math_atan(obj, x)
|
|||
VALUE obj, x;
|
||||
{
|
||||
Need_Float(x);
|
||||
|
||||
return rb_float_new(atan(RFLOAT(x)->value));
|
||||
}
|
||||
|
||||
|
@ -102,6 +104,7 @@ math_cosh(obj, x)
|
|||
VALUE obj, x;
|
||||
{
|
||||
Need_Float(x);
|
||||
|
||||
return rb_float_new(cosh(RFLOAT(x)->value));
|
||||
}
|
||||
|
||||
|
@ -119,6 +122,7 @@ math_sinh(obj, x)
|
|||
VALUE obj, x;
|
||||
{
|
||||
Need_Float(x);
|
||||
|
||||
return rb_float_new(sinh(RFLOAT(x)->value));
|
||||
}
|
||||
|
||||
|
@ -136,6 +140,7 @@ math_tanh(obj, x)
|
|||
VALUE obj, x;
|
||||
{
|
||||
Need_Float(x);
|
||||
|
||||
return rb_float_new(tanh(RFLOAT(x)->value));
|
||||
}
|
||||
|
||||
|
@ -144,6 +149,7 @@ math_acosh(obj, x)
|
|||
VALUE obj, x;
|
||||
{
|
||||
Need_Float(x);
|
||||
|
||||
return rb_float_new(acosh(RFLOAT(x)->value));
|
||||
}
|
||||
|
||||
|
@ -152,6 +158,7 @@ math_asinh(obj, x)
|
|||
VALUE obj, x;
|
||||
{
|
||||
Need_Float(x);
|
||||
|
||||
return rb_float_new(asinh(RFLOAT(x)->value));
|
||||
}
|
||||
|
||||
|
@ -160,6 +167,7 @@ math_atanh(obj, x)
|
|||
VALUE obj, x;
|
||||
{
|
||||
Need_Float(x);
|
||||
|
||||
return rb_float_new(atanh(RFLOAT(x)->value));
|
||||
}
|
||||
|
||||
|
@ -168,6 +176,7 @@ math_exp(obj, x)
|
|||
VALUE obj, x;
|
||||
{
|
||||
Need_Float(x);
|
||||
|
||||
return rb_float_new(exp(RFLOAT(x)->value));
|
||||
}
|
||||
|
||||
|
@ -181,6 +190,7 @@ math_log(obj, x)
|
|||
VALUE obj, x;
|
||||
{
|
||||
Need_Float(x);
|
||||
|
||||
return rb_float_new(log(RFLOAT(x)->value));
|
||||
}
|
||||
|
||||
|
@ -189,6 +199,7 @@ math_log10(obj, x)
|
|||
VALUE obj, x;
|
||||
{
|
||||
Need_Float(x);
|
||||
|
||||
return rb_float_new(log10(RFLOAT(x)->value));
|
||||
}
|
||||
|
||||
|
@ -210,8 +221,8 @@ math_frexp(obj, x)
|
|||
int exp;
|
||||
|
||||
Need_Float(x);
|
||||
|
||||
d = frexp(RFLOAT(x)->value, &exp);
|
||||
|
||||
return rb_assoc_new(rb_float_new(d), INT2NUM(exp));
|
||||
}
|
||||
|
||||
|
@ -222,6 +233,7 @@ math_ldexp(obj, x, n)
|
|||
double d;
|
||||
|
||||
Need_Float(x);
|
||||
|
||||
return rb_float_new(d = ldexp(RFLOAT(x)->value, NUM2INT(n)));
|
||||
}
|
||||
|
||||
|
@ -230,6 +242,7 @@ math_hypot(obj, x, y)
|
|||
VALUE obj, x, y;
|
||||
{
|
||||
Need_Float2(x, y);
|
||||
|
||||
return rb_float_new(hypot(RFLOAT(x)->value, RFLOAT(y)->value));
|
||||
}
|
||||
|
||||
|
|
2
prec.c
2
prec.c
|
@ -6,7 +6,7 @@
|
|||
$Date$
|
||||
created at: Tue Jan 26 02:40:41 2000
|
||||
|
||||
Copyright (C) 1993-2001 Yukihiro Matsumoto
|
||||
Copyright (C) 1993-2002 Yukihiro Matsumoto
|
||||
|
||||
**********************************************************************/
|
||||
|
||||
|
|
12
random.c
12
random.c
|
@ -6,7 +6,7 @@
|
|||
$Date$
|
||||
created at: Fri Dec 24 16:39:21 JST 1993
|
||||
|
||||
Copyright (C) 1993-2001 Yukihiro Matsumoto
|
||||
Copyright (C) 1993-2002 Yukihiro Matsumoto
|
||||
|
||||
**********************************************************************/
|
||||
|
||||
|
@ -77,7 +77,7 @@ void srand48 _((long));
|
|||
#endif /* not HAVE_DRAND48 */
|
||||
|
||||
static int first = 1;
|
||||
#ifdef HAVE_RANDOM
|
||||
#ifdef HAVE_INITSTATE
|
||||
static char state[256];
|
||||
#endif
|
||||
|
||||
|
@ -88,7 +88,7 @@ rand_init(seed)
|
|||
int old;
|
||||
static unsigned int saved_seed;
|
||||
|
||||
#if defined HAVE_INITSTATE
|
||||
#ifdef HAVE_INITSTATE
|
||||
if (first == 1) {
|
||||
initstate(1, state, sizeof state);
|
||||
}
|
||||
|
@ -111,11 +111,11 @@ rb_f_srand(argc, argv, obj)
|
|||
VALUE *argv;
|
||||
VALUE obj;
|
||||
{
|
||||
VALUE a;
|
||||
VALUE sd;
|
||||
unsigned int seed, old;
|
||||
|
||||
rb_secure(4);
|
||||
if (rb_scan_args(argc, argv, "01", &a) == 0) {
|
||||
if (rb_scan_args(argc, argv, "01", &sd) == 0) {
|
||||
static int n = 0;
|
||||
struct timeval tv;
|
||||
|
||||
|
@ -123,7 +123,7 @@ rb_f_srand(argc, argv, obj)
|
|||
seed = tv.tv_sec ^ tv.tv_usec ^ getpid() ^ n++;
|
||||
}
|
||||
else {
|
||||
seed = NUM2UINT(a);
|
||||
seed = NUM2UINT(sd);
|
||||
}
|
||||
old = rand_init(seed);
|
||||
|
||||
|
|
8
re.c
8
re.c
|
@ -238,7 +238,13 @@ rb_reg_expr_str(str, s, len)
|
|||
else {
|
||||
p = s;
|
||||
while (p<pend) {
|
||||
if (*p == '/') {
|
||||
if (*p == '\\') {
|
||||
rb_str_buf_cat(str, p++, 1);
|
||||
if (p<pend) {
|
||||
rb_str_buf_cat(str, p, 1);
|
||||
}
|
||||
}
|
||||
else if (*p == '/') {
|
||||
char c = '\\';
|
||||
rb_str_buf_cat(str, &c, 1);
|
||||
rb_str_buf_cat(str, p, 1);
|
||||
|
|
8
ruby.h
8
ruby.h
|
@ -497,10 +497,10 @@ VALUE rb_eval_string _((const char*));
|
|||
VALUE rb_eval_string_protect _((const char*, int*));
|
||||
VALUE rb_eval_string_wrap _((const char*, int*));
|
||||
VALUE rb_funcall __((VALUE, ID, int, ...));
|
||||
VALUE rb_funcall2 _((VALUE, ID, int, VALUE*));
|
||||
VALUE rb_funcall3 _((VALUE, ID, int, VALUE*));
|
||||
int rb_scan_args __((int, VALUE*, const char*, ...));
|
||||
VALUE rb_call_super _((int, VALUE*));
|
||||
VALUE rb_funcall2 _((VALUE, ID, int, const VALUE*));
|
||||
VALUE rb_funcall3 _((VALUE, ID, int, const VALUE*));
|
||||
int rb_scan_args __((int, const VALUE*, const char*, ...));
|
||||
VALUE rb_call_super _((int, const VALUE*));
|
||||
|
||||
VALUE rb_gv_set _((const char*, VALUE));
|
||||
VALUE rb_gv_get _((const char*));
|
||||
|
|
15
sprintf.c
15
sprintf.c
|
@ -6,7 +6,7 @@
|
|||
$Date$
|
||||
created at: Fri Oct 15 10:39:26 JST 1993
|
||||
|
||||
Copyright (C) 1993-2001 Yukihiro Matsumoto
|
||||
Copyright (C) 1993-2002 Yukihiro Matsumoto
|
||||
Copyright (C) 2000 Network Applied Communication Laboratory, Inc.
|
||||
Copyright (C) 2000 Information-technology Promotion Agency, Japan
|
||||
|
||||
|
@ -62,23 +62,22 @@ remove_sign_bits(str, base)
|
|||
#define FWIDTH 32
|
||||
#define FPREC 64
|
||||
|
||||
#define CHECK(l) {\
|
||||
#define CHECK(l) \
|
||||
while (blen + (l) >= bsiz) {\
|
||||
REALLOC_N(buf, char, bsiz*2);\
|
||||
bsiz*=2;\
|
||||
}\
|
||||
}
|
||||
}
|
||||
|
||||
#define PUSH(s, l) { \
|
||||
#define PUSH(s, l) do { \
|
||||
CHECK(l);\
|
||||
memcpy(&buf[blen], s, l);\
|
||||
blen += (l);\
|
||||
}
|
||||
} while (0)
|
||||
|
||||
#define GETARG() \
|
||||
((nextarg >= argc) ? (rb_raise(rb_eArgError, "too few argument."), 0) : argv[nextarg++])
|
||||
|
||||
#define GETASTER(val) { \
|
||||
#define GETASTER(val) do { \
|
||||
t = p++; \
|
||||
n = 0; \
|
||||
for (; p < end && ISDIGIT(*p); p++) { \
|
||||
|
@ -98,7 +97,7 @@ remove_sign_bits(str, base)
|
|||
p = t; \
|
||||
} \
|
||||
val = NUM2INT(tmp); \
|
||||
}
|
||||
} while (0)
|
||||
|
||||
VALUE
|
||||
rb_f_sprintf(argc, argv)
|
||||
|
|
8
string.c
8
string.c
|
@ -58,6 +58,10 @@ str_new(klass, ptr, len)
|
|||
{
|
||||
VALUE str = rb_obj_alloc(klass);
|
||||
|
||||
if (len < 0) {
|
||||
rb_raise(rb_eArgError, "negative string size (or size too big)");
|
||||
}
|
||||
|
||||
RSTRING(str)->len = len;
|
||||
RSTRING(str)->aux.capa = len;
|
||||
RSTRING(str)->ptr = ALLOC_N(char,len+1);
|
||||
|
@ -460,8 +464,8 @@ void
|
|||
rb_str_modify(str)
|
||||
VALUE str;
|
||||
{
|
||||
if (str_independent(str)) return;
|
||||
str_make_independent(str);
|
||||
if (!str_independent(str))
|
||||
str_make_independent(str);
|
||||
}
|
||||
|
||||
VALUE
|
||||
|
|
7
time.c
7
time.c
|
@ -6,7 +6,7 @@
|
|||
$Date$
|
||||
created at: Tue Dec 28 14:31:59 JST 1993
|
||||
|
||||
Copyright (C) 1993-2001 Yukihiro Matsumoto
|
||||
Copyright (C) 1993-2002 Yukihiro Matsumoto
|
||||
|
||||
**********************************************************************/
|
||||
|
||||
|
@ -40,9 +40,8 @@ struct time_object {
|
|||
int tm_got;
|
||||
};
|
||||
|
||||
#define GetTimeval(obj, tobj) {\
|
||||
Data_Get_Struct(obj, struct time_object, tobj);\
|
||||
}
|
||||
#define GetTimeval(obj, tobj) \
|
||||
Data_Get_Struct(obj, struct time_object, tobj)
|
||||
|
||||
static VALUE
|
||||
time_s_alloc(klass)
|
||||
|
|
6
util.c
6
util.c
|
@ -6,7 +6,7 @@
|
|||
$Date$
|
||||
created at: Fri Mar 10 17:22:34 JST 1995
|
||||
|
||||
Copyright (C) 1993-2001 Yukihiro Matsumoto
|
||||
Copyright (C) 1993-2002 Yukihiro Matsumoto
|
||||
|
||||
**********************************************************************/
|
||||
|
||||
|
@ -464,8 +464,8 @@ static void mmrot3_(a, b, c, mmarg)
|
|||
/*****************************************************/
|
||||
|
||||
typedef struct { char *LL, *RR; } stack_node; /* Stack structure for L,l,R,r */
|
||||
#define PUSH(ll,rr) {top->LL = (ll); top->RR = (rr); ++top;} /* Push L,l,R,r */
|
||||
#define POP(ll,rr) {--top; ll = top->LL; rr = top->RR;} /* Pop L,l,R,r */
|
||||
#define PUSH(ll,rr) do { top->LL = (ll); top->RR = (rr); ++top; } while (0) /* Push L,l,R,r */
|
||||
#define POP(ll,rr) do { --top; ll = top->LL; rr = top->RR; } while (0) /* Pop L,l,R,r */
|
||||
|
||||
#define med3(a,b,c) ((*cmp)(a,b)<0 ? \
|
||||
((*cmp)(b,c)<0 ? b : ((*cmp)(a,c)<0 ? c : a)) : \
|
||||
|
|
Loading…
Add table
Reference in a new issue