1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

2000-06-20

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_4@770 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
matz 2000-06-20 06:08:52 +00:00
parent dc9d02aa1d
commit 79a5d02e19
12 changed files with 395 additions and 309 deletions

View file

@ -1,9 +1,42 @@
Tue Jun 20 15:07:39 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
* lib/parsedate.rb: don't seek year too greedy.
Tue Jun 20 06:14:43 2000 Wakou Aoyama <wakou@fsinet.or.jp> Tue Jun 20 06:14:43 2000 Wakou Aoyama <wakou@fsinet.or.jp>
* lib/cgi.rb: change: version syntax. old: x.yz, now: x.y.z * lib/cgi.rb: change: version syntax. old: x.yz, now: x.y.z
* lib/net/telnet.rb: ditto. * lib/net/telnet.rb: ditto.
Fri Jun 16 05:18:45 2000 Yasuhiro Fukuma <yasuf@bsdclub.org>
* configure.in: FreeBSD: do not link dummy libxpg4 which was
merged into libc.
Fri Jun 16 03:17:36 2000 Satoshi Nojo <nojo@t-samukawa.or.jp>
* ext/dbm/dbm.c (fdbm_length): use GetDBM. empty?, [] too.
* ext/gdbm/gdbm.c (fgdbm_length): ditto.
* ext/sdbm/init.c (fsdbm_length): ditto.
Wed Jun 14 17:01:41 2000 Katsuyuki Komatsu <komatsu@sarion.co.jp>
* rubytest.rb: add CONFIG['EXEEXT'] to the executable file name.
Wed Jun 14 14:50:00 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
* eval.c (method_arity): wrong arity number for the methods with
optional arguments.
* time.c (make_time_t): opposite timezone shift (should be negative).
Wed 14 Jun 04:58:53 2000 Dave Thomas <dave@thomases.com>
* io.c (rb_io_set_lineno): should have returned VALUE, not
integer.
Wed Jun 14 13:17:02 2000 WATANABE Hirofumi <eban@os.rim.or.jp> Wed Jun 14 13:17:02 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
* io.c: typo(ig/if). * io.c: typo(ig/if).

510
configure vendored

File diff suppressed because it is too large Load diff

View file

@ -144,14 +144,29 @@ human*) ac_cv_func_getpgrp_void=yes;;
beos*) ;; beos*) ;;
cygwin*) ;; cygwin*) ;;
os2_emx*) LIBS="-lm $LIBS" os2_emx*) LIBS="-lm $LIBS"
ac_cv_lib_xpg4_setlocale=no
ac_cv_lib_dir_opendir=no;; ac_cv_lib_dir_opendir=no;;
freebsd*) LIBS="-lm $LIBS"
AC_CACHE_CHECK([whether -lxpg4 has to be linked],
rb_cv_lib_xpg4_needed,
[AC_TRY_CPP([
#include <osreldate.h>
#if __FreeBSD_version < 400020 || \
(__FreeBSD_version >= 500000 && __FreeBSD_version < 500005)
#error needs libxpg4
#endif
],
rb_cv_lib_xpg4_needed=no,
rb_cv_lib_xpg4_needed=yes,
rb_cv_lib_xpg4_needed=yes)])
if test "$rb_cv_lib_xpg4_needed" = yes; then
AC_CHECK_LIB(xpg4, setlocale)
fi
;;
*) LIBS="-lm $LIBS";; *) LIBS="-lm $LIBS";;
esac esac
AC_CHECK_LIB(crypt, crypt) AC_CHECK_LIB(crypt, crypt)
AC_CHECK_LIB(dl, dlopen) # Dynamic linking for SunOS/Solaris and SYSV AC_CHECK_LIB(dl, dlopen) # Dynamic linking for SunOS/Solaris and SYSV
AC_CHECK_LIB(dld, shl_load) # Dynamic linking for HP-UX AC_CHECK_LIB(dld, shl_load) # Dynamic linking for HP-UX
AC_CHECK_LIB(xpg4, setlocale) # FreeBSD needs this
dnl Checks for header files. dnl Checks for header files.
AC_HEADER_DIRENT AC_HEADER_DIRENT

81
eval.c
View file

@ -5981,7 +5981,8 @@ method_arity(method)
body = body->nd_head; body = body->nd_head;
if (!body) return INT2FIX(0); if (!body) return INT2FIX(0);
n = body->nd_cnt; n = body->nd_cnt;
if (body->nd_rest >= 0) n = -n-1; if (body->nd_opt || body->nd_rest >= 0)
n = -n-1;
return INT2FIX(n); return INT2FIX(n);
} }
} }
@ -6114,7 +6115,7 @@ enum thread_status {
/* +infty, for this purpose */ /* +infty, for this purpose */
#define DELAY_INFTY 1E30 #define DELAY_INFTY 1E30
typedef struct thread * thread_t; typedef struct thread * rb_thread_t;
struct thread { struct thread {
struct thread *next, *prev; struct thread *next, *prev;
@ -6152,7 +6153,7 @@ struct thread {
int wait_for; int wait_for;
int fd; int fd;
double delay; double delay;
thread_t join; rb_thread_t join;
int abort; int abort;
@ -6163,8 +6164,8 @@ struct thread {
#define THREAD_RAISED 0x200 #define THREAD_RAISED 0x200
static thread_t main_thread; static rb_thread_t main_thread;
static thread_t curr_thread = 0; static rb_thread_t curr_thread = 0;
static int num_waiting_on_fd = 0; static int num_waiting_on_fd = 0;
static int num_waiting_on_timer = 0; static int num_waiting_on_timer = 0;
@ -6190,7 +6191,7 @@ timeofday()
static void static void
thread_mark(th) thread_mark(th)
thread_t th; rb_thread_t th;
{ {
struct FRAME *frame; struct FRAME *frame;
struct BLOCK *block; struct BLOCK *block;
@ -6245,7 +6246,7 @@ thread_mark(th)
void void
rb_gc_mark_threads() rb_gc_mark_threads()
{ {
thread_t th; rb_thread_t th;
if (!curr_thread) return; if (!curr_thread) return;
FOREACH_THREAD(th) { FOREACH_THREAD(th) {
@ -6255,7 +6256,7 @@ rb_gc_mark_threads()
static void static void
thread_free(th) thread_free(th)
thread_t th; rb_thread_t th;
{ {
if (th->stk_ptr) free(th->stk_ptr); if (th->stk_ptr) free(th->stk_ptr);
th->stk_ptr = 0; th->stk_ptr = 0;
@ -6267,7 +6268,7 @@ thread_free(th)
if (th != main_thread) free(th); if (th != main_thread) free(th);
} }
static thread_t static rb_thread_t
rb_thread_check(data) rb_thread_check(data)
VALUE data; VALUE data;
{ {
@ -6275,7 +6276,7 @@ rb_thread_check(data)
rb_raise(rb_eTypeError, "wrong argument type %s (expected Thread)", rb_raise(rb_eTypeError, "wrong argument type %s (expected Thread)",
rb_class2name(CLASS_OF(data))); rb_class2name(CLASS_OF(data)));
} }
return (thread_t)RDATA(data)->data; return (rb_thread_t)RDATA(data)->data;
} }
static int th_raise_argc; static int th_raise_argc;
@ -6295,7 +6296,7 @@ static char *th_signm;
static void static void
rb_thread_save_context(th) rb_thread_save_context(th)
thread_t th; rb_thread_t th;
{ {
VALUE v; VALUE v;
@ -6365,11 +6366,11 @@ thread_switch(n)
#define THREAD_SAVE_CONTEXT(th) \ #define THREAD_SAVE_CONTEXT(th) \
(rb_thread_save_context(th),thread_switch(setjmp((th)->context))) (rb_thread_save_context(th),thread_switch(setjmp((th)->context)))
static void rb_thread_restore_context _((thread_t,int)); static void rb_thread_restore_context _((rb_thread_t,int));
static void static void
stack_extend(th, exit) stack_extend(th, exit)
thread_t th; rb_thread_t th;
int exit; int exit;
{ {
VALUE space[1024]; VALUE space[1024];
@ -6380,11 +6381,11 @@ stack_extend(th, exit)
static void static void
rb_thread_restore_context(th, exit) rb_thread_restore_context(th, exit)
thread_t th; rb_thread_t th;
int exit; int exit;
{ {
VALUE v; VALUE v;
static thread_t tmp; static rb_thread_t tmp;
static int ex; static int ex;
if (!th->stk_ptr) rb_bug("unsaved context"); if (!th->stk_ptr) rb_bug("unsaved context");
@ -6428,7 +6429,7 @@ rb_thread_restore_context(th, exit)
static void static void
rb_thread_ready(th) rb_thread_ready(th)
thread_t th; rb_thread_t th;
{ {
/* The thread is no longer waiting on anything */ /* The thread is no longer waiting on anything */
if (th->wait_for & WAIT_FD) { if (th->wait_for & WAIT_FD) {
@ -6455,7 +6456,7 @@ rb_thread_remove()
static int static int
rb_thread_dead(th) rb_thread_dead(th)
thread_t th; rb_thread_t th;
{ {
return th->status == THREAD_KILLED; return th->status == THREAD_KILLED;
} }
@ -6464,7 +6465,7 @@ void
rb_thread_fd_close(fd) rb_thread_fd_close(fd)
int fd; int fd;
{ {
thread_t th; rb_thread_t th;
FOREACH_THREAD(th) { FOREACH_THREAD(th) {
if ((th->wait_for & WAIT_FD) && th->fd == fd) { if ((th->wait_for & WAIT_FD) && th->fd == fd) {
@ -6505,9 +6506,9 @@ rb_thread_deadlock()
void void
rb_thread_schedule() rb_thread_schedule()
{ {
thread_t next; /* OK */ rb_thread_t next; /* OK */
thread_t th; rb_thread_t th;
thread_t curr; rb_thread_t curr;
select_err: select_err:
rb_thread_pending = 0; rb_thread_pending = 0;
@ -6841,7 +6842,7 @@ static VALUE
rb_thread_join(thread) rb_thread_join(thread)
VALUE thread; VALUE thread;
{ {
thread_t th = rb_thread_check(thread); rb_thread_t th = rb_thread_check(thread);
if (!rb_thread_dead(th)) { if (!rb_thread_dead(th)) {
if (th == curr_thread) if (th == curr_thread)
@ -6894,7 +6895,7 @@ VALUE
rb_thread_wakeup(thread) rb_thread_wakeup(thread)
VALUE thread; VALUE thread;
{ {
thread_t th = rb_thread_check(thread); rb_thread_t th = rb_thread_check(thread);
if (th->status == THREAD_KILLED) if (th->status == THREAD_KILLED)
rb_raise(rb_eThreadError, "killed thread"); rb_raise(rb_eThreadError, "killed thread");
@ -6917,7 +6918,7 @@ static VALUE
rb_thread_kill(thread) rb_thread_kill(thread)
VALUE thread; VALUE thread;
{ {
thread_t th = rb_thread_check(thread); rb_thread_t th = rb_thread_check(thread);
if (th->status == THREAD_TO_KILL || th->status == THREAD_KILLED) if (th->status == THREAD_TO_KILL || th->status == THREAD_KILLED)
return thread; return thread;
@ -7014,7 +7015,7 @@ static VALUE
rb_thread_abort_exc(thread) rb_thread_abort_exc(thread)
VALUE thread; VALUE thread;
{ {
thread_t th = rb_thread_check(thread); rb_thread_t th = rb_thread_check(thread);
return th->abort?Qtrue:Qfalse; return th->abort?Qtrue:Qfalse;
} }
@ -7023,7 +7024,7 @@ static VALUE
rb_thread_abort_exc_set(thread, val) rb_thread_abort_exc_set(thread, val)
VALUE thread, val; VALUE thread, val;
{ {
thread_t th = rb_thread_check(thread); rb_thread_t th = rb_thread_check(thread);
th->abort = RTEST(val); th->abort = RTEST(val);
return val; return val;
@ -7060,11 +7061,11 @@ rb_thread_abort_exc_set(thread, val)
th->locals = 0;\ th->locals = 0;\
} while(0) } while(0)
static thread_t static rb_thread_t
rb_thread_alloc(klass) rb_thread_alloc(klass)
VALUE klass; VALUE klass;
{ {
thread_t th; rb_thread_t th;
THREAD_ALLOC(th); THREAD_ALLOC(th);
th->thread = Data_Wrap_Struct(klass, thread_mark, thread_free, th); th->thread = Data_Wrap_Struct(klass, thread_mark, thread_free, th);
@ -7140,7 +7141,7 @@ rb_thread_create_0(fn, arg, klass)
void *arg; void *arg;
VALUE klass; VALUE klass;
{ {
thread_t th = rb_thread_alloc(klass); rb_thread_t th = rb_thread_alloc(klass);
volatile VALUE thread = th->thread; volatile VALUE thread = th->thread;
enum thread_status status; enum thread_status status;
int state; int state;
@ -7215,7 +7216,7 @@ rb_thread_scope_shared_p()
static VALUE static VALUE
rb_thread_yield(arg, th) rb_thread_yield(arg, th)
int arg; int arg;
thread_t th; rb_thread_t th;
{ {
scope_dup(ruby_block->scope); scope_dup(ruby_block->scope);
return rb_yield_0(th->thread, 0, 0, Qfalse); return rb_yield_0(th->thread, 0, 0, Qfalse);
@ -7235,7 +7236,7 @@ static VALUE
rb_thread_value(thread) rb_thread_value(thread)
VALUE thread; VALUE thread;
{ {
thread_t th = rb_thread_check(thread); rb_thread_t th = rb_thread_check(thread);
rb_thread_join(thread); rb_thread_join(thread);
@ -7246,7 +7247,7 @@ static VALUE
rb_thread_status(thread) rb_thread_status(thread)
VALUE thread; VALUE thread;
{ {
thread_t th = rb_thread_check(thread); rb_thread_t th = rb_thread_check(thread);
if (rb_thread_dead(th)) { if (rb_thread_dead(th)) {
if (NIL_P(th->errinfo) && (th->flags & THREAD_RAISED)) if (NIL_P(th->errinfo) && (th->flags & THREAD_RAISED))
@ -7261,7 +7262,7 @@ static VALUE
rb_thread_stop_p(thread) rb_thread_stop_p(thread)
VALUE thread; VALUE thread;
{ {
thread_t th = rb_thread_check(thread); rb_thread_t th = rb_thread_check(thread);
if (rb_thread_dead(th)) return Qtrue; if (rb_thread_dead(th)) return Qtrue;
if (th->status == THREAD_STOPPED) return Qtrue; if (th->status == THREAD_STOPPED) return Qtrue;
@ -7280,7 +7281,7 @@ rb_thread_wait_other_threads()
static void static void
rb_thread_cleanup() rb_thread_cleanup()
{ {
thread_t th; rb_thread_t th;
if (curr_thread != curr_thread->next->prev) { if (curr_thread != curr_thread->next->prev) {
curr_thread = curr_thread->prev; curr_thread = curr_thread->prev;
@ -7372,7 +7373,7 @@ rb_thread_raise(argc, argv, thread)
VALUE *argv; VALUE *argv;
VALUE thread; VALUE thread;
{ {
thread_t th = rb_thread_check(thread); rb_thread_t th = rb_thread_check(thread);
if (rb_thread_dead(th)) return thread; if (rb_thread_dead(th)) return thread;
if (curr_thread == th) { if (curr_thread == th) {
@ -7430,7 +7431,7 @@ rb_thread_local_aref(thread, id)
VALUE thread; VALUE thread;
ID id; ID id;
{ {
thread_t th; rb_thread_t th;
VALUE val; VALUE val;
th = rb_thread_check(thread); th = rb_thread_check(thread);
@ -7454,7 +7455,7 @@ rb_thread_local_aset(thread, id, val)
ID id; ID id;
VALUE val; VALUE val;
{ {
thread_t th = rb_thread_check(thread); rb_thread_t th = rb_thread_check(thread);
if (safe_level >= 4 && !FL_TEST(thread, FL_TAINT)) if (safe_level >= 4 && !FL_TEST(thread, FL_TAINT))
rb_raise(rb_eSecurityError, "Insecure: can't modify thread values"); rb_raise(rb_eSecurityError, "Insecure: can't modify thread values");
@ -7482,7 +7483,7 @@ static VALUE
rb_thread_key_p(thread, id) rb_thread_key_p(thread, id)
VALUE thread, id; VALUE thread, id;
{ {
thread_t th = rb_thread_check(thread); rb_thread_t th = rb_thread_check(thread);
if (!th->locals) return Qfalse; if (!th->locals) return Qfalse;
if (st_lookup(th->locals, rb_to_id(id), 0)) if (st_lookup(th->locals, rb_to_id(id), 0))
@ -7497,7 +7498,7 @@ rb_callcc(self)
VALUE self; VALUE self;
{ {
volatile VALUE cont; volatile VALUE cont;
thread_t th; rb_thread_t th;
struct tag *tag; struct tag *tag;
THREAD_ALLOC(th); THREAD_ALLOC(th);
@ -7523,7 +7524,7 @@ rb_continuation_call(argc, argv, cont)
VALUE *argv; VALUE *argv;
VALUE cont; VALUE cont;
{ {
thread_t th = rb_thread_check(cont); rb_thread_t th = rb_thread_check(cont);
switch (argc) { switch (argc) {
case 0: case 0:

View file

@ -98,8 +98,7 @@ fdbm_close(obj)
{ {
struct dbmdata *dbmp; struct dbmdata *dbmp;
Data_Get_Struct(obj, struct dbmdata, dbmp); GetDBM(obj, dbmp);
if (dbmp->di_dbm == 0) closed_dbm();
dbm_close(dbmp->di_dbm); dbm_close(dbmp->di_dbm);
dbmp->di_dbm = 0; dbmp->di_dbm = 0;
@ -328,7 +327,7 @@ fdbm_store(obj, keystr, valstr)
val.dptr = RSTRING(valstr)->ptr; val.dptr = RSTRING(valstr)->ptr;
val.dsize = RSTRING(valstr)->len; val.dsize = RSTRING(valstr)->len;
Data_Get_Struct(obj, struct dbmdata, dbmp); GetDBM(obj, dbmp);
dbmp->di_size = -1; dbmp->di_size = -1;
dbm = dbmp->di_dbm; dbm = dbmp->di_dbm;
if (dbm_store(dbm, key, val, DBM_REPLACE)) { if (dbm_store(dbm, key, val, DBM_REPLACE)) {
@ -351,7 +350,7 @@ fdbm_length(obj)
DBM *dbm; DBM *dbm;
int i = 0; int i = 0;
Data_Get_Struct(obj, struct dbmdata, dbmp); GetDBM(obj, dbmp);
if (dbmp->di_size > 0) return INT2FIX(dbmp->di_size); if (dbmp->di_size > 0) return INT2FIX(dbmp->di_size);
dbm = dbmp->di_dbm; dbm = dbmp->di_dbm;
@ -372,7 +371,7 @@ fdbm_empty_p(obj)
DBM *dbm; DBM *dbm;
int i = 0; int i = 0;
Data_Get_Struct(obj, struct dbmdata, dbmp); GetDBM(obj, dbmp);
if (dbmp->di_size < 0) { if (dbmp->di_size < 0) {
dbm = dbmp->di_dbm; dbm = dbmp->di_dbm;

View file

@ -99,8 +99,7 @@ fgdbm_close(obj)
{ {
struct dbmdata *dbmp; struct dbmdata *dbmp;
Data_Get_Struct(obj, struct dbmdata, dbmp); GetDBM(obj, dbmp);
if (dbmp->di_dbm == 0) closed_dbm();
gdbm_close(dbmp->di_dbm); gdbm_close(dbmp->di_dbm);
dbmp->di_dbm = 0; dbmp->di_dbm = 0;
@ -330,7 +329,7 @@ fgdbm_store(obj, keystr, valstr)
val.dptr = RSTRING(valstr)->ptr; val.dptr = RSTRING(valstr)->ptr;
val.dsize = RSTRING(valstr)->len; val.dsize = RSTRING(valstr)->len;
Data_Get_Struct(obj, struct dbmdata, dbmp); GetDBM(obj, dbmp);
dbmp->di_size = -1; dbmp->di_size = -1;
dbm = dbmp->di_dbm; dbm = dbmp->di_dbm;
if (gdbm_store(dbm, key, val, GDBM_REPLACE)) { if (gdbm_store(dbm, key, val, GDBM_REPLACE)) {
@ -350,7 +349,7 @@ fgdbm_length(obj)
GDBM_FILE dbm; GDBM_FILE dbm;
int i = 0; int i = 0;
Data_Get_Struct(obj, struct dbmdata, dbmp); GetDBM(obj, dbmp);
if (dbmp->di_size > 0) return INT2FIX(dbmp->di_size); if (dbmp->di_size > 0) return INT2FIX(dbmp->di_size);
dbm = dbmp->di_dbm; dbm = dbmp->di_dbm;
@ -371,7 +370,7 @@ fgdbm_empty_p(obj)
GDBM_FILE dbm; GDBM_FILE dbm;
int i = 0; int i = 0;
Data_Get_Struct(obj, struct dbmdata, dbmp); GetDBM(obj, dbmp);
if (dbmp->di_size < 0) { if (dbmp->di_size < 0) {
dbm = dbmp->di_dbm; dbm = dbmp->di_dbm;

View file

@ -95,8 +95,7 @@ fsdbm_close(obj)
{ {
struct dbmdata *dbmp; struct dbmdata *dbmp;
Data_Get_Struct(obj, struct dbmdata, dbmp); GetDBM(obj, dbmp);
if (dbmp->di_dbm == 0) closed_sdbm();
sdbm_close(dbmp->di_dbm); sdbm_close(dbmp->di_dbm);
dbmp->di_dbm = 0; dbmp->di_dbm = 0;
@ -325,7 +324,7 @@ fsdbm_store(obj, keystr, valstr)
val.dptr = RSTRING(valstr)->ptr; val.dptr = RSTRING(valstr)->ptr;
val.dsize = RSTRING(valstr)->len; val.dsize = RSTRING(valstr)->len;
Data_Get_Struct(obj, struct dbmdata, dbmp); GetDBM(obj, dbmp);
dbmp->di_size = -1; dbmp->di_size = -1;
dbm = dbmp->di_dbm; dbm = dbmp->di_dbm;
if (sdbm_store(dbm, key, val, DBM_REPLACE)) { if (sdbm_store(dbm, key, val, DBM_REPLACE)) {
@ -348,7 +347,7 @@ fsdbm_length(obj)
DBM *dbm; DBM *dbm;
int i = 0; int i = 0;
Data_Get_Struct(obj, struct dbmdata, dbmp); GetDBM(obj, dbmp);
if (dbmp->di_size > 0) return INT2FIX(dbmp->di_size); if (dbmp->di_size > 0) return INT2FIX(dbmp->di_size);
dbm = dbmp->di_dbm; dbm = dbmp->di_dbm;
@ -369,7 +368,7 @@ fsdbm_empty_p(obj)
DBM *dbm; DBM *dbm;
int i = 0; int i = 0;
Data_Get_Struct(obj, struct dbmdata, dbmp); GetDBM(obj, dbmp);
if (dbmp->di_size < 0) { if (dbmp->di_size < 0) {
dbm = dbmp->di_dbm; dbm = dbmp->di_dbm;

3
io.c
View file

@ -741,7 +741,8 @@ rb_io_set_lineno(io, lineno)
GetOpenFile(io, fptr); GetOpenFile(io, fptr);
rb_io_check_readable(fptr); rb_io_check_readable(fptr);
return fptr->lineno = NUM2INT(lineno); fptr->lineno = NUM2INT(lineno);
return lineno;
} }
static void static void

View file

@ -67,9 +67,9 @@ module ParseDate
mon = MONTHS[$2.downcase] mon = MONTHS[$2.downcase]
year = $3.to_i year = $3.to_i
end end
if date.sub!(/\d{4}/i, ' ') if !year && date.sub!(/\d{4}/i, ' ')
year = $&.to_i year = $&.to_i
elsif date.sub!(/\d\d/i, ' ') elsif !year && date.sub!(/\d\d/i, ' ')
year = $&.to_i year = $&.to_i
end end
if guess and year if guess and year

View file

@ -3,7 +3,7 @@
require 'rbconfig' require 'rbconfig'
include Config include Config
unless File.exist? "./#{CONFIG['ruby_install_name']}" unless File.exist? "./#{CONFIG['ruby_install_name']}#{CONFIG['EXEEXT']}"
print "./#{CONFIG['ruby_install_name']} is not found.\n" print "./#{CONFIG['ruby_install_name']} is not found.\n"
print "Try `make' first, then `make test', please.\n" print "Try `make' first, then `make test', please.\n"
exit 0 exit 0

17
time.c
View file

@ -292,19 +292,16 @@ make_time_t(tptr, utc_or_local)
if (!tm) goto error; if (!tm) goto error;
if (tptr->tm_year != tm->tm_year) goto out_of_range; if (tptr->tm_year != tm->tm_year) goto out_of_range;
} }
guess += (tptr->tm_mday - tm->tm_mday) * 3600 * 24; guess += (tptr->tm_mday - tm->tm_mday) * 24 * 3600;
guess += (tptr->tm_hour - tm->tm_hour) * 3600; guess += (tptr->tm_hour - tm->tm_hour) * 3600;
guess += (tptr->tm_min - tm->tm_min) * 60; guess += (tptr->tm_min - tm->tm_min) * 60;
guess += (tptr->tm_sec - tm->tm_sec); guess += (tptr->tm_sec - tm->tm_sec);
if (guess < 0) goto out_of_range; if (guess < 0) goto out_of_range;
if (!utc_or_local) { /* localtime zone adjust */ if (!utc_or_local) { /* localtime zone adjust */
#if defined(HAVE_DAYLIGHT) #if defined(HAVE_TM_ZONE)
extern int daylight; tm = localtime(&guess);
extern long timezone; guess -= tm->tm_gmtoff;
localtime(&guess);
guess += timezone + daylight;
#else #else
struct tm gt, lt; struct tm gt, lt;
long tzsec; long tzsec;
@ -799,8 +796,14 @@ time_zone(time)
time_get_tm(time, tobj->gmt); time_get_tm(time, tobj->gmt);
} }
#if defined(HAVE_TM_ZONE)
return rb_str_new2(tobj->tm.tm_zone);
#elif defined(HAVE_TZNAME) && defined(HAVE_DAYLIGHT)
return rb_str_new2(tzname[daylight && tobj->tm.tm_isdst]);
#else
len = strftime(buf, 64, "%Z", &tobj->tm); len = strftime(buf, 64, "%Z", &tobj->tm);
return rb_str_new(buf, len); return rb_str_new(buf, len);
#endif
} }
static VALUE static VALUE

View file

@ -1,4 +1,4 @@
#define RUBY_VERSION "1.4.4" #define RUBY_VERSION "1.4.5"
#define RUBY_RELEASE_DATE "2000-06-14" #define RUBY_RELEASE_DATE "2000-06-20"
#define RUBY_VERSION_CODE 144 #define RUBY_VERSION_CODE 145
#define RUBY_RELEASE_CODE 20000614 #define RUBY_RELEASE_CODE 20000620