diff options
author | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2000-01-24 03:46:14 +0000 |
---|---|---|
committer | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2000-01-24 03:46:14 +0000 |
commit | 1af83e49971e5ca5fa1b0c80a12e7b34d9271cac (patch) | |
tree | 6ffb7b4d699e973fd1e4f46db6bb78551e76e1b1 | |
parent | 2d2bbb96777e868e49a39cebe8359d02f6f117a2 (diff) |
2000-01-24
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_4@610 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ChangeLog | 4 | ||||
-rw-r--r-- | configure | 63 | ||||
-rw-r--r-- | configure.in | 73 | ||||
-rw-r--r-- | dln.c | 2 | ||||
-rw-r--r-- | eval.c | 15 | ||||
-rw-r--r-- | ext/socket/extconf.rb | 21 | ||||
-rw-r--r-- | ext/socket/socket.c | 25 | ||||
-rw-r--r-- | lib/observer.rb | 2 | ||||
-rw-r--r-- | lib/parsedate.rb | 2 | ||||
-rw-r--r-- | misc/ruby-mode.el | 3 |
10 files changed, 141 insertions, 69 deletions
@@ -1,3 +1,7 @@ +Sun Jan 16 20:12:13 2000 Koji Arai <JCA02266@nifty.ne.jp> + + * eval.c (dvar_asgn): may need to push dvar. + Sat Jan 15 22:21:08 2000 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp> * eval.c (search_method): argument klass may be 0. @@ -4015,6 +4015,14 @@ echo "$ac_t""$rb_cv_binary_elf" 1>&6 else LDFLAGS="-rdynamic" fi;; +netbsd*) + if [ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ] + then + netbsd_elf=yes + else + netbsd_elf=no + fi + ;; esac @@ -4024,7 +4032,7 @@ STATIC= if test "$with_dln_a_out" != yes; then rb_cv_dlopen=unknown echo $ac_n "checking whether OS depend dynamic link works""... $ac_c" 1>&6 -echo "configure:4028: checking whether OS depend dynamic link works" >&5 +echo "configure:4036: checking whether OS depend dynamic link works" >&5 if test "$GCC" = yes; then case "$host_os" in nextstep*) ;; @@ -4085,11 +4093,10 @@ echo "configure:4028: checking whether OS depend dynamic link works" >&5 test "$GCC" = yes && `$CC --print-prog-name=ld` -v 2>&1 | grep "GNU ld" > /dev/null || LDSHARED="ld -Bshareable" fi rb_cv_dlopen=yes ;; - netbsd*) LDSHARED="ld -shared" - case "$host_cpu" in - alpha) - LDFLAGS="-export-dynamic" ;; - esac + netbsd*) if test x"$netbsd_elf" = x"yes"; then + LDFLAGS="-export-dynamic" + fi + LDSHARED="ld -shared" rb_cv_dlopen=yes ;; openbsd*) LDSHARED="ld -Bforcearchive -Bshareable" rb_cv_dlopen=yes ;; @@ -4146,12 +4153,12 @@ if test "$ac_cv_header_a_out_h" = yes; then if test "$with_dln_a_out" = yes || test "$rb_cv_dlopen" = unknown; then cat confdefs.h > config.h echo $ac_n "checking whether matz's dln works""... $ac_c" 1>&6 -echo "configure:4150: checking whether matz's dln works" >&5 +echo "configure:4157: checking whether matz's dln works" >&5 if eval "test \"`echo '$''{'rb_cv_dln_a_out'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 4155 "configure" +#line 4162 "configure" #include "confdefs.h" #define USE_DLN_A_OUT @@ -4161,7 +4168,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:4165: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4172: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* rb_cv_dln_a_out=yes else @@ -4268,7 +4275,7 @@ fi case "$host_os" in human*) echo $ac_n "checking for _harderr in -lsignal""... $ac_c" 1>&6 -echo "configure:4272: checking for _harderr in -lsignal" >&5 +echo "configure:4279: checking for _harderr in -lsignal" >&5 ac_lib_var=`echo signal'_'_harderr | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -4276,7 +4283,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lsignal $LIBS" cat > conftest.$ac_ext <<EOF -#line 4280 "configure" +#line 4287 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 @@ -4287,7 +4294,7 @@ int main() { _harderr() ; return 0; } EOF -if { (eval echo configure:4291: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4298: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -4315,7 +4322,7 @@ else fi echo $ac_n "checking for hmemset in -lhmem""... $ac_c" 1>&6 -echo "configure:4319: checking for hmemset in -lhmem" >&5 +echo "configure:4326: checking for hmemset in -lhmem" >&5 ac_lib_var=`echo hmem'_'hmemset | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -4323,7 +4330,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lhmem $LIBS" cat > conftest.$ac_ext <<EOF -#line 4327 "configure" +#line 4334 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 @@ -4334,7 +4341,7 @@ int main() { hmemset() ; return 0; } EOF -if { (eval echo configure:4338: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4345: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -4364,12 +4371,12 @@ fi for ac_func in select gettimeofday do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4368: checking for $ac_func" >&5 +echo "configure:4375: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 4373 "configure" +#line 4380 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func(); below. */ @@ -4392,7 +4399,7 @@ $ac_func(); ; return 0; } EOF -if { (eval echo configure:4396: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4403: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4417,7 +4424,7 @@ fi done echo $ac_n "checking whether PD libc _dtos18 fail to convert big number""... $ac_c" 1>&6 -echo "configure:4421: checking whether PD libc _dtos18 fail to convert big number" >&5 +echo "configure:4428: checking whether PD libc _dtos18 fail to convert big number" >&5 if eval "test \"`echo '$''{'rb_cv_missing__dtos18'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -4425,7 +4432,7 @@ else rb_cv_missing__dtos18=no else cat > conftest.$ac_ext <<EOF -#line 4429 "configure" +#line 4436 "configure" #include "confdefs.h" #include <stdio.h> @@ -4437,7 +4444,7 @@ main () } EOF -if { (eval echo configure:4441: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:4448: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then rb_cv_missing__dtos18=yes else @@ -4459,7 +4466,7 @@ EOF fi echo $ac_n "checking whether PD libc fconvert fail to round""... $ac_c" 1>&6 -echo "configure:4463: checking whether PD libc fconvert fail to round" >&5 +echo "configure:4470: checking whether PD libc fconvert fail to round" >&5 if eval "test \"`echo '$''{'rb_cv_missing_fconvert'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -4467,7 +4474,7 @@ else rb_cv_missing_fconvert=no else cat > conftest.$ac_ext <<EOF -#line 4471 "configure" +#line 4478 "configure" #include "confdefs.h" #include <stdio.h> @@ -4480,7 +4487,7 @@ main () } EOF -if { (eval echo configure:4484: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:4491: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then rb_cv_missing_fconvert=yes else @@ -4585,11 +4592,9 @@ if test "$enable_shared" = 'yes'; then ;; netbsd*) LIBRUBY_SO='lib$(RUBY_INSTALL_NAME).so.$(MAJOR).$(MINOR)' - case "$host_cpu" in - alpha|mipsel|mipseb|powerpc|sparc64) # ELF platforms - LIBRUBY_ALIASES='lib$(RUBY_INSTALL_NAME).so.$(MAJOR) lib$(RUBY_INSTALL_NAME).so' ;; - *) LIBRUBY_ALIASES= ;; # a.out platforms - esac + if test x"$netbsd_elf" = "xyes"; then + LIBRUBY_ALIASES='lib$(RUBY_INSTALL_NAME).so.$(MAJOR) lib$(RUBY_INSTALL_NAME).so' + fi ;; solaris*) XLDFLAGS='-R${prefix}/lib' diff --git a/configure.in b/configure.in index a67b50a196..fbf6778bf0 100644 --- a/configure.in +++ b/configure.in @@ -260,7 +260,7 @@ AC_CACHE_CHECK(whether right shift preserve sign bit, rb_cv_rshift_sign, int main() { - if (-1==(-1>>(unsigned)1)) + if (-1==(-1>>1)) return 0; return 1; } @@ -269,7 +269,7 @@ main() rb_cv_rshift_sign=no, rb_cv_rshift_sign=yes)]) if test "$rb_cv_rshift_sign" = yes; then - AC_DEFINE(RSHIFT(x,y), ((x)>>y)) + AC_DEFINE(RSHIFT(x,y), ((x)>>(int)y)) else AC_DEFINE(RSHIFT(x,y), (((x)<0) ? ~((~(x))>>y) : (x)>>y)) fi @@ -309,10 +309,14 @@ AC_SUBST(DEFAULT_KCODE) AC_ARG_WITH(default-kcode, [--with-default-kcode=CODE specify default value for \$KCODE (utf8|euc|sjis|none)], [case $withval in - utf8) AC_DEFINE(DEFAULT_KCODE, KCODE_UTF8);; - euc) AC_DEFINE(DEFAULT_KCODE, KCODE_EUC);; - sjis) AC_DEFINE(DEFAULT_KCODE, KCODE_SJIS);; - none) AC_DEFINE(DEFAULT_KCODE, KCODE_NONE);; + utf8) AC_DEFINE(DEFAULT_KCODE, KCODE_UTF8) + DEFAULT_KCODE="KCODE_UTF8";; + euc) AC_DEFINE(DEFAULT_KCODE, KCODE_EUC) + DEFAULT_KCODE="KCODE_EUC";; + sjis) AC_DEFINE(DEFAULT_KCODE, KCODE_SJIS) + DEFAULT_KCODE="KCODE_SJIS";; + none) AC_DEFINE(DEFAULT_KCODE, KCODE_NONE) + DEFAULT_KCODE="KCODE_NONE";; *) AC_MSG_WARN($withval is not valid kcode; ignored);; esac]) @@ -326,10 +330,8 @@ AC_ARG_WITH(dln-a-out, AC_SUBST(XLDFLAGS)dnl -case "$host_os" in - linux*) - AC_CACHE_CHECK(whether ELF binaries are produced, rb_cv_binary_elf, - [AC_TRY_RUN([ +AC_CACHE_CHECK(whether ELF binaries are produced, rb_cv_binary_elf, +[AC_TRY_RUN([ /* Test for whether ELF binaries are produced */ #include <fcntl.h> #include <stdlib.h> @@ -346,15 +348,30 @@ main() { exit(0); /* succeed (yes, it's ELF) */ } ], - rb_cv_binary_elf=yes, - rb_cv_binary_elf=no, - rb_cv_binary_elf=yes)]) +rb_cv_binary_elf=yes, +rb_cv_binary_elf=no, +rb_cv_binary_elf=yes)]) + +if test "$rb_cv_binary_elf" = yes; then + AC_DEFINE(USE_ELF) +fi + +case "$target_os" in + linux*) if test "$rb_cv_binary_elf" = no; then with_dln_a_out=yes host_os=${host_os}-a_out else LDFLAGS="-rdynamic" fi;; +netbsd*) + if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]] + then + netbsd_elf=yes + else + netbsd_elf=no + fi + ;; esac AC_SUBST(DLDFLAGS)dnl @@ -387,9 +404,8 @@ if test "$with_dln_a_out" != yes; then else case "$host_os" in hpux*) CCDLFLAGS='+z';; - solaris*) CCDLFLAGS='-K PIC' ;; + solaris*|irix*) CCDLFLAGS='-K PIC' ;; sunos*) CCDLFLAGS='-PIC' ;; - irix*) CCDLFLAGS='-KPIC' ;; esix*|uxpds*) CCDLFLAGS='-KPIC' ;; *) CCDLFLAGS='' ;; esac @@ -409,7 +425,7 @@ if test "$with_dln_a_out" != yes; then rb_cv_dlopen=yes;; sunos*) LDSHARED='ld -assert nodefinitions' rb_cv_dlopen=yes;; - irix*) LDSHARED='ld -shared' + irix*) LDSHARED='ld -ignore_unresolved' rb_cv_dlopen=yes;; sysv4*) LDSHARED='ld -G' rb_cv_dlopen=yes;; @@ -420,20 +436,17 @@ if test "$with_dln_a_out" != yes; then linux*) LDSHARED="$CC -shared" rb_cv_dlopen=yes ;; freebsd*) LDSHARED="$CC -shared" - if test -x /usr/bin/objformat && \ - test `/usr/bin/objformat` = "elf" ; then + if test "$rb_cv_binary_elf" = yes; then LDFLAGS="-rdynamic" DLDFLAGS='-Wl,-soname,$(.TARGET)' - rb_cv_freebsd_elf=yes else test "$GCC" = yes && `$CC --print-prog-name=ld` -v 2>&1 | grep "GNU ld" > /dev/null || LDSHARED="ld -Bshareable" fi rb_cv_dlopen=yes ;; - netbsd*) LDSHARED="ld -shared" - case "$host_cpu" in - alpha) - LDFLAGS="-export-dynamic" ;; - esac + netbsd*) LDSHARED="ld -shared" + if test "$rb_cv_binary_elf" = yes; then + LDFLAGS="-export-dynamic" + fi rb_cv_dlopen=yes ;; openbsd*) LDSHARED="ld -Bforcearchive -Bshareable" rb_cv_dlopen=yes ;; @@ -677,18 +690,18 @@ if test "$enable_shared" = 'yes'; then ;; freebsd*) LIBRUBY_SO='lib$(RUBY_INSTALL_NAME).so.$(MAJOR)$(MINOR)' - if test "$rb_cv_freebsd_elf" != "yes" ; then + if test "$rb_cv_binary_elf" != "yes" ; then LIBRUBY_SO="$LIBRUBY_SO.\$(TEENY)" LIBRUBY_ALIASES='' fi ;; netbsd*) LIBRUBY_SO='lib$(RUBY_INSTALL_NAME).so.$(MAJOR).$(MINOR)' - case "$host_cpu" in - alpha|mipsel|mipseb|powerpc|sparc64) # ELF platforms - LIBRUBY_ALIASES='lib$(RUBY_INSTALL_NAME).so.$(MAJOR) lib$(RUBY_INSTALL_NAME).so' ;; - *) LIBRUBY_ALIASES= ;; # a.out platforms - esac + if test "$rb_cv_binary_elf" = yes; then # ELF platforms + LIBRUBY_ALIASES='lib$(RUBY_INSTALL_NAME).so.$(MAJOR) lib$(RUBY_INSTALL_NAME).so' + else + LIBRUBY_ALIASES= # a.out platforms + fi ;; solaris*) XLDFLAGS='-R${prefix}/lib' @@ -80,7 +80,7 @@ int eaccess(); #endif #ifndef FUNCNAME_PATTERN -# if defined(__hp9000s300) || (defined(__NetBSD__) && (!defined(__alpha__) && !defined(__mips__))) || defined(__BORLANDC__) || (defined(__FreeBSD__) && __FreeBSD__ < 3) || defined(__OpenBSD__) || defined(NeXT) || defined(__WATCOMC__) || defined(__APPLE__) +# if defined(__hp9000s300) || (defined(__NetBSD__) && !defined(__ELF__)) || defined(__BORLANDC__) || (defined(__FreeBSD__) && __FreeBSD__ < 3) || defined(__OpenBSD__) || defined(NeXT) || defined(__WATCOMC__) || defined(__APPLE__) # define FUNCNAME_PATTERN "_Init_%.200s" # else # define FUNCNAME_PATTERN "Init_%.200s" @@ -556,14 +556,27 @@ dvar_asgn(id, value, push) struct RVarmap *vars = ruby_dyna_vars; while (vars) { - if (push && vars->id == 0) break; + if (push && vars->id == 0) { + rb_dvar_push(id, value); + return; + } if (vars->id == id) { vars->val = value; return; } vars = vars->next; } + + vars = 0; + if (ruby_dyna_vars && ruby_dyna_vars->id == 0) { + vars = ruby_dyna_vars; + ruby_dyna_vars = ruby_dyna_vars->next; + } rb_dvar_push(id, value); + if (vars) { + vars->next = ruby_dyna_vars; + ruby_dyna_vars = vars; + } } void diff --git a/ext/socket/extconf.rb b/ext/socket/extconf.rb index 6975994ef8..b7aee1cc36 100644 --- a/ext/socket/extconf.rb +++ b/ext/socket/extconf.rb @@ -41,6 +41,7 @@ end $ipv6type = nil $ipv6lib = nil $ipv6libdir = nil +$ipv6trylibc = nil if $ipv6 if egrep_cpp("yes", <<EOF) #include <netinet/in.h> @@ -59,6 +60,7 @@ EOF $ipv6type = "kame" $ipv6lib="inet6" $ipv6libdir="/usr/local/v6/lib" + $ipv6trylibc=true $CFLAGS="-DINET6 "+$CFLAGS elsif File.directory? "/usr/inet6" $ipv6type = "linux" @@ -100,7 +102,7 @@ EOF if $ipv6lib if File.directory? $ipv6libdir and File.exist? "#{$ipv6libdir}/lib#{$ipv6lib}.a" $LOCAL_LIBS = " -L#$ipv6libdir -l#$ipv6lib" - else + elsif !$ipv6trylibc print <<EOS Fatal: no #$ipv6lib library found. cannot continue. @@ -135,6 +137,23 @@ end #include <netdb.h> #include <string.h> #include <sys/socket.h> +int +main() +{ + struct sockaddr_storage ss; + + ss.ss_family; + return 0; +} +EOF + $CFLAGS="-DHAVE_SOCKADDR_STORAGE "+$CFLAGS +end + + if try_link(<<EOF) +#include <sys/types.h> +#include <netdb.h> +#include <string.h> +#include <sys/socket.h> #include <netinet/in.h> int main() diff --git a/ext/socket/socket.c b/ext/socket/socket.c index 543446dba6..108b94b603 100644 --- a/ext/socket/socket.c +++ b/ext/socket/socket.c @@ -81,10 +81,27 @@ int Rconnect(); #define INET_SERVER 1 #define INET_SOCKS 2 -#ifndef INET6 -# undef ss_family -# define sockaddr_storage sockaddr -# define ss_family sa_family +#ifndef HAVE_SOCKADDR_STORAGE +/* + * RFC 2553: protocol-independent placeholder for socket addresses + */ +#define _SS_MAXSIZE 128 +#define _SS_ALIGNSIZE (sizeof(long long)) +#define _SS_PAD1SIZE (_SS_ALIGNSIZE - sizeof(unsigned char) * 2) +#define _SS_PAD2SIZE (_SS_MAXSIZE - sizeof(unsigned char) * 2 - \ + _SS_PAD1SIZE - _SS_ALIGNSIZE) + +struct sockaddr_storage { +#ifdef HAVE_SA_LEN + unsigned char ss_len; /* address length */ + unsigned char ss_family; /* address family */ +#else + unsigned short ss_family; +#endif + char __ss_pad1[_SS_PAD1SIZE]; + long long __ss_align; /* force desired structure storage alignment */ + char __ss_pad2[_SS_PAD2SIZE]; +}; #endif #ifdef NT diff --git a/lib/observer.rb b/lib/observer.rb index 0c74b49750..a91c1e38c3 100644 --- a/lib/observer.rb +++ b/lib/observer.rb @@ -32,7 +32,7 @@ module Observable def notify_observers(*arg) if @observer_state if @observer_peers - for i in @observer_peers + for i in @observer_peers.dup i.update(*arg) end end diff --git a/lib/parsedate.rb b/lib/parsedate.rb index 7bf1affb42..35fffcfe98 100644 --- a/lib/parsedate.rb +++ b/lib/parsedate.rb @@ -27,7 +27,7 @@ module ParseDate if date.sub!(/(#{DAYPAT})[a-z]*,?/i, ' ') wday = DAYS[$1.downcase] end - if date.sub!(/(\d+):(\d+)(?::(\d+))?(?:\s*(am|pm))?(?:\s+([a-z]{1,4}(?:\s+[a-z]{1,4}|[-+]\d{4})?))?/i, ' ') + if date.sub!(/(\d+):(\d+)(?::(\d+))?(?:\s*(am|pm))?(?:\s+([a-z]{1,4}(?:\s+[a-z]{1,4}|[-+]\d{4})?|[-+]\d{4}))?/i, ' ') hour = $1.to_i min = $2.to_i if $3 diff --git a/misc/ruby-mode.el b/misc/ruby-mode.el index 5ebf4f875e..75efbf012b 100644 --- a/misc/ruby-mode.el +++ b/misc/ruby-mode.el @@ -180,7 +180,8 @@ The variable ruby-indent-level controls the amount of indentation. (back-to-indentation) (setq top (current-column)) (skip-chars-backward " \t") - (if (>= shift top) (setq shift (- shift top))) + (if (>= shift top) (setq shift (- shift top)) + (setq shift 0)) (if (and (bolp) (= x top)) (move-to-column (+ x shift)) |