summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2001-09-05 06:54:57 +0000
committermatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2001-09-05 06:54:57 +0000
commit2e2786ccab636dd82de640bd771f2cc9fc20ab31 (patch)
tree0fc0c7632c71d722058b1f6c7ca513d57611086d
parent393f665e33782d4a91813abe599b1b28d675127d (diff)
* re.c (Init_Regexp): to_s to be alias to inspect.
* parse.y (yylex): should support 'keyword='. * ruby.c (proc_options): should not adjust argc/argv if -e option is supplied. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@1727 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog19
-rw-r--r--ToDo10
-rw-r--r--ext/socket/socket.c167
-rw-r--r--ext/tk/lib/tk.rb6
-rw-r--r--ext/tk/lib/tktext.rb20
-rw-r--r--io.c3
-rw-r--r--parse.y47
-rw-r--r--re.c3
-rw-r--r--version.h4
9 files changed, 232 insertions, 47 deletions
diff --git a/ChangeLog b/ChangeLog
index 657f6885fe..2da8721d3f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,7 +1,20 @@
+Tue Sep 4 01:03:18 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * re.c (Init_Regexp): to_s to be alias to inspect.
+
+Mon Sep 3 22:46:59 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (yylex): should support 'keyword='.
+
Mon Sep 3 20:26:08 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
* intern.h (rb_find_file_ext): changed from rb_find_file_noext().
+Mon Sep 3 15:12:49 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ruby.c (proc_options): should not adjust argc/argv if -e option
+ is supplied.
+
Mon Sep 3 14:11:17 2001 Akinori MUSHA <knu@iDaemons.org>
* error.c: unbreak the build on *BSD with gcc 3.0.1 by removing
@@ -171,6 +184,12 @@ Fri Aug 17 00:49:51 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
* parse.y (parse_regx): handle backslash escaping of delimiter here.
+Thu Aug 16 23:03:40 2001 Koji Arai <JCA02266@nifty.ne.jp>
+
+ * io.c: prevent recursive malloc calls on NEC UX/4800.
+
+ * ext/socket/socket.c: ditto.
+
Thu Aug 16 13:54:04 2001 Usaku Nakamura <usa@ruby-lang.org>
* ext/socket/socket.c (s_recvfrom): fix typo.
diff --git a/ToDo b/ToDo
index afbbff08fa..c1f4824254 100644
--- a/ToDo
+++ b/ToDo
@@ -50,7 +50,6 @@ Hacking Interpreter
* Built-in Interactive Ruby.
* trap every method invocation, which can be enabled by e.g. trap_call :method.
* unify Errno exceptions of same errno, or new exception comparison scheme.
-* signal list (Signal::trap, Signal::list??).
* 2.times{|i| if i==0 then a = 15 else puts eval("a") end} should print nil.
Standard Libraries
@@ -63,7 +62,9 @@ Standard Libraries
- Process::Status
- File::lchown, File::lchmod; xxx - still need work for non existing platforms
- move Time::times to Process.
-* Enumerable#sort_by for Schwartzian transformation
+- Enumerable#sort_by for Schwartzian transformation
+- fork_and_kill_other_threads.
+- signal list (Signal::trap, Signal::list).
* String#scanf(?)
* Object#fmt(?)
* Integer#{bin,oct,hex,heX}
@@ -77,17 +78,16 @@ Standard Libraries
* introduce Boolean class; super of TrueClass, FalseClass
* synchronized method - synchronized{...}, synchronized :foo, :bar
* Array#&, Array#| to allow duplication. ???
-* fork_and_kill_other_threads.
* way to specify immortal (fork endurance) thread;
* or raise ForkException to every thread but fork caller.
* Hash::new{default} or recommend Hash#fetch?
* new user-defined marshal scheme. _dump(dumper), _load(restorer)
-* warn, warning for Ruby level
* hash etc. should handle self referenceing array/hash
* move NameError under StandardError.
* library to load per-user profile seeking .ruby_profile or ruby.ini file.
-* warning framework
+* warning framework (warn, warning for Ruby level)
* marshal should not depend on sprintf/strtod (works bad for locale).
+* ternary arg - a.pow(b,c) == a**b%c
Extension Libraries
diff --git a/ext/socket/socket.c b/ext/socket/socket.c
index a473d128ae..cba9cf409a 100644
--- a/ext/socket/socket.c
+++ b/ext/socket/socket.c
@@ -437,8 +437,8 @@ s_recvfrom(sock, argc, argv, from)
str = rb_tainted_str_new(0, NUM2INT(len));
- rb_thread_wait_fd(fd);
retry:
+ rb_thread_wait_fd(fd);
TRAP_BEG;
RSTRING(str)->len = recvfrom(fd, RSTRING(str)->ptr, RSTRING(str)->len, flags,
(struct sockaddr*)buf, &alen);
@@ -454,7 +454,6 @@ s_recvfrom(sock, argc, argv, from)
#if EAGAIN != EWOULDBLOCK
case EAGAIN:
#endif
- rb_thread_wait_fd(fd);
goto retry;
}
rb_sys_fail("recvfrom(2)");
@@ -1102,9 +1101,13 @@ s_accept(class, fd, sockaddr, len)
rb_secure(3);
retry:
rb_thread_wait_fd(fd);
+#if defined(_nec_ews)
+ fd2 = accept(fd, sockaddr, len);
+#else
TRAP_BEG;
fd2 = accept(fd, sockaddr, len);
TRAP_END;
+#endif
if (fd2 < 0) {
switch (errno) {
case EMFILE:
@@ -1121,7 +1124,6 @@ s_accept(class, fd, sockaddr, len)
#if EAGAIN != EWOULDBLOCK
case EAGAIN:
#endif
- rb_thread_wait_fd(fd);
goto retry;
}
rb_sys_fail(0);
@@ -2313,6 +2315,165 @@ Init_socket()
sock_define_const("SOL_UDP", SOL_UDP);
#endif
+#ifdef IPPROTO_IP
+ sock_define_const("IPPROTO_IP", IPPROTO_IP);
+#else
+ sock_define_const("IPPROTO_IP", 0);
+#endif
+#ifdef IPPROTO_ICMP
+ sock_define_const("IPPROTO_ICMP", IPPROTO_ICMP);
+#else
+ sock_define_const("IPPROTO_ICMP", 1);
+#endif
+#ifdef IPPROTO_IGMP
+ sock_define_const("IPPROTO_IGMP", IPPROTO_IGMP);
+#endif
+#ifdef IPPROTO_GGP
+ sock_define_const("IPPROTO_GGP", IPPROTO_GGP);
+#endif
+#ifdef IPPROTO_TCP
+ sock_define_const("IPPROTO_TCP", IPPROTO_TCP);
+#else
+ sock_define_const("IPPROTO_TCP", 6);
+#endif
+#ifdef IPPROTO_EGP
+ sock_define_const("IPPROTO_EGP", IPPROTO_EGP);
+#endif
+#ifdef IPPROTO_PUP
+ sock_define_const("IPPROTO_PUP", IPPROTO_PUP);
+#endif
+#ifdef IPPROTO_UDP
+ sock_define_const("IPPROTO_UDP", IPPROTO_UDP);
+#else
+ sock_define_const("IPPROTO_UDP", 17);
+#endif
+#ifdef IPPROTO_IDP
+ sock_define_const("IPPROTO_IDP", IPPROTO_IDP);
+#endif
+#ifdef IPPROTO_HELLO
+ sock_define_const("IPPROTO_HELLO", IPPROTO_HELLO);
+#endif
+#ifdef IPPROTO_ND
+ sock_define_const("IPPROTO_ND", IPPROTO_ND);
+#endif
+#ifdef IPPROTO_TP
+ sock_define_const("IPPROTO_TP", IPPROTO_TP);
+#endif
+#ifdef IPPROTO_XTP
+ sock_define_const("IPPROTO_XTP", IPPROTO_XTP);
+#endif
+#ifdef IPPROTO_EON
+ sock_define_const("IPPROTO_EON", IPPROTO_EON);
+#endif
+#ifdef IPPROTO_BIP
+ sock_define_const("IPPROTO_BIP", IPPROTO_BIP);
+#endif
+/**/
+#ifdef IPPROTO_RAW
+ sock_define_const("IPPROTO_RAW", IPPROTO_RAW);
+#else
+ sock_define_const("IPPROTO_RAW", 255);
+#endif
+#ifdef IPPROTO_MAX
+ sock_define_const("IPPROTO_MAX", IPPROTO_MAX);
+#endif
+
+ /* Some port configuration */
+#ifdef IPPORT_RESERVED
+ sock_define_const("IPPORT_RESERVED", IPPORT_RESERVED);
+#else
+ sock_define_const("IPPORT_RESERVED", 1024);
+#endif
+#ifdef IPPORT_USERRESERVED
+ sock_define_const("IPPORT_USERRESERVED", IPPORT_USERRESERVED);
+#else
+ sock_define_const("IPPORT_USERRESERVED", 5000);
+#endif
+ /* Some reserved IP v.4 addresses */
+#ifdef INADDR_ANY
+ sock_define_const("INADDR_ANY", INADDR_ANY);
+#else
+ sock_define_const("INADDR_ANY", 0x00000000);
+#endif
+#ifdef INADDR_BROADCAST
+ sock_define_const("INADDR_BROADCAST", INADDR_BROADCAST);
+#else
+ sock_define_const("INADDR_BROADCAST", 0xffffffff);
+#endif
+#ifdef INADDR_LOOPBACK
+ sock_define_const("INADDR_LOOPBACK", INADDR_LOOPBACK);
+#else
+ sock_define_const("INADDR_LOOPBACK", 0x7F000001);
+#endif
+#ifdef INADDR_UNSPEC_GROUP
+ sock_define_const("INADDR_UNSPEC_GROUP", INADDR_UNSPEC_GROUP);
+#else
+ sock_define_const("INADDR_UNSPEC_GROUP", 0xe0000000);
+#endif
+#ifdef INADDR_ALLHOSTS_GROUP
+ sock_define_const("INADDR_ALLHOSTS_GROUP", INADDR_ALLHOSTS_GROUP);
+#else
+ sock_define_const("INADDR_ALLHOSTS_GROUP", 0xe0000001);
+#endif
+#ifdef INADDR_MAX_LOCAL_GROUP
+ sock_define_const("INADDR_MAX_LOCAL_GROUP", INADDR_MAX_LOCAL_GROUP);
+#else
+ sock_define_const("INADDR_MAX_LOCAL_GROUP", 0xe00000ff);
+#endif
+#ifdef INADDR_NONE
+ sock_define_const("INADDR_NONE", INADDR_NONE);
+#else
+ sock_define_const("INADDR_NONE", 0xffffffff);
+#endif
+ /* IP [gs]etsockopt options */
+#ifdef IP_OPTIONS
+ sock_define_const("IP_OPTIONS", IP_OPTIONS);
+#endif
+#ifdef IP_HDRINCL
+ sock_define_const("IP_HDRINCL", IP_HDRINCL);
+#endif
+#ifdef IP_TOS
+ sock_define_const("IP_TOS", IP_TOS);
+#endif
+#ifdef IP_TTL
+ sock_define_const("IP_TTL", IP_TTL);
+#endif
+#ifdef IP_RECVOPTS
+ sock_define_const("IP_RECVOPTS", IP_RECVOPTS);
+#endif
+#ifdef IP_RECVRETOPTS
+ sock_define_const("IP_RECVRETOPTS", IP_RECVRETOPTS);
+#endif
+#ifdef IP_RECVDSTADDR
+ sock_define_const("IP_RECVDSTADDR", IP_RECVDSTADDR);
+#endif
+#ifdef IP_RETOPTS
+ sock_define_const("IP_RETOPTS", IP_RETOPTS);
+#endif
+#ifdef IP_MULTICAST_IF
+ sock_define_const("IP_MULTICAST_IF", IP_MULTICAST_IF);
+#endif
+#ifdef IP_MULTICAST_TTL
+ sock_define_const("IP_MULTICAST_TTL", IP_MULTICAST_TTL);
+#endif
+#ifdef IP_MULTICAST_LOOP
+ sock_define_const("IP_MULTICAST_LOOP", IP_MULTICAST_LOOP);
+#endif
+#ifdef IP_ADD_MEMBERSHIP
+ sock_define_const("IP_ADD_MEMBERSHIP", IP_ADD_MEMBERSHIP);
+#endif
+#ifdef IP_DROP_MEMBERSHIP
+ sock_define_const("IP_DROP_MEMBERSHIP", IP_DROP_MEMBERSHIP);
+#endif
+#ifdef IP_DEFAULT_MULTICAST_TTL
+ sock_define_const("IP_DEFAULT_MULTICAST_TTL", IP_DEFAULT_MULTICAST_TTL);
+#endif
+#ifdef IP_DEFAULT_MULTICAST_LOOP
+ sock_define_const("IP_DEFAULT_MULTICAST_LOOP", IP_DEFAULT_MULTICAST_LOOP);
+#endif
+#ifdef IP_MAX_MEMBERSHIPS
+ sock_define_const("IP_MAX_MEMBERSHIPS", IP_MAX_MEMBERSHIPS);
+#endif
#ifdef SO_DEBUG
sock_define_const("SO_DEBUG", SO_DEBUG);
#endif
diff --git a/ext/tk/lib/tk.rb b/ext/tk/lib/tk.rb
index f10e8e23d8..e64a6b3af7 100644
--- a/ext/tk/lib/tk.rb
+++ b/ext/tk/lib/tk.rb
@@ -2233,7 +2233,7 @@ class TkObject<TkKernel
def cget(slot)
case slot
- when 'text', 'label', 'show', 'data', 'flie'
+ when 'text', 'label', 'show', 'data', 'file'
tk_call path, 'cget', "-#{slot}"
else
tk_tcl2ruby tk_call path, 'cget', "-#{slot}"
@@ -2273,7 +2273,7 @@ class TkObject<TkKernel
else
if slot
case slot
- when 'text', 'label', 'show', 'data', 'flie'
+ when 'text', 'label', 'show', 'data', 'file'
conf = tk_split_simplelist(tk_send('configure', "-#{slot}") )
else
conf = tk_split_list(tk_send('configure', "-#{slot}") )
@@ -2285,7 +2285,7 @@ class TkObject<TkKernel
conf = tk_split_simplelist(conflist)
conf[0] = conf[0][1..-1]
case conf[0]
- when 'text', 'label', 'show', 'data', 'flie'
+ when 'text', 'label', 'show', 'data', 'file'
else
if conf[3]
if conf[3].index('{')
diff --git a/ext/tk/lib/tktext.rb b/ext/tk/lib/tktext.rb
index 51b5d82b60..6ec738edb0 100644
--- a/ext/tk/lib/tktext.rb
+++ b/ext/tk/lib/tktext.rb
@@ -279,7 +279,7 @@ class TkText<TkTextWin
def tag_cget(tag, key)
case key
- when 'text', 'label', 'show', 'data', 'flie'
+ when 'text', 'label', 'show', 'data', 'file'
tk_call @path, 'tag', 'cget', tag, "-#{key}"
else
tk_tcl2ruby tk_call @path, 'tag', 'cget', tag, "-#{key}"
@@ -308,7 +308,7 @@ class TkText<TkTextWin
def tag_configinfo(tag, key=nil)
if key
case key
- when 'text', 'label', 'show', 'data', 'flie'
+ when 'text', 'label', 'show', 'data', 'file'
conf = tk_split_simplelist(tk_send('tag','configure',tag,"-#{key}"))
else
conf = tk_split_list(tk_send('tag','configure',tag,"-#{key}"))
@@ -320,7 +320,7 @@ class TkText<TkTextWin
conf = tk_split_simplelist(conflist)
conf[0] = conf[0][1..-1]
case conf[0]
- when 'text', 'label', 'show', 'data', 'flie'
+ when 'text', 'label', 'show', 'data', 'file'
else
if conf[3]
if conf[3].index('{')
@@ -712,7 +712,7 @@ class TkTextTag<TkObject
def cget(key)
case key
- when 'text', 'label', 'show', 'data', 'flie'
+ when 'text', 'label', 'show', 'data', 'file'
tk_call @t.path, 'tag', 'cget', @id, "-#{key}"
else
tk_tcl2ruby tk_call @t.path, 'tag', 'cget', @id, "-#{key}"
@@ -896,7 +896,7 @@ class TkTextWindow<TkObject
def cget(slot)
case slot
- when 'text', 'label', 'show', 'data', 'flie'
+ when 'text', 'label', 'show', 'data', 'file'
tk_call @t.path, 'window', 'cget', @index, "-#{slot}"
else
tk_tcl2ruby tk_call @t.path, 'window', 'cget', @index, "-#{slot}"
@@ -947,7 +947,7 @@ class TkTextWindow<TkObject
def configinfo(slot = nil)
if slot
case slot
- when 'text', 'label', 'show', 'data', 'flie'
+ when 'text', 'label', 'show', 'data', 'file'
conf = tk_split_simplelist(tk_call @t.path, 'window', 'configure',
@index, "-#{slot}")
else
@@ -962,7 +962,7 @@ class TkTextWindow<TkObject
conf = tk_split_simplelist(conflist)
conf[0] = conf[0][1..-1]
case conf[0]
- when 'text', 'label', 'show', 'data', 'flie'
+ when 'text', 'label', 'show', 'data', 'file'
else
if conf[3]
if conf[3].index('{')
@@ -1017,7 +1017,7 @@ class TkTextImage<TkObject
def cget(slot)
case slot
- when 'text', 'label', 'show', 'data', 'flie'
+ when 'text', 'label', 'show', 'data', 'file'
tk_call @t.path, 'image', 'cget', @index, "-#{slot}"
else
tk_tcl2ruby tk_call @t.path, 'image', 'cget', @index, "-#{slot}"
@@ -1046,7 +1046,7 @@ class TkTextImage<TkObject
def configinfo(slot = nil)
if slot
case slot
- when 'text', 'label', 'show', 'data', 'flie'
+ when 'text', 'label', 'show', 'data', 'file'
conf = tk_split_simplelist(tk_call @t.path, 'image', 'configure',
@index, "-#{slot}")
else
@@ -1061,7 +1061,7 @@ class TkTextImage<TkObject
conf = tk_split_simplelist(conflist)
conf[0] = conf[0][1..-1]
case conf[0]
- when 'text', 'label', 'show', 'data', 'flie'
+ when 'text', 'label', 'show', 'data', 'file'
else
if conf[3]
if conf[3].index('{')
diff --git a/io.c b/io.c
index 3f9e7e3b79..05e1a6a7cd 100644
--- a/io.c
+++ b/io.c
@@ -27,7 +27,7 @@
# define NO_LONG_FNAME
#endif
-#if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(sun)
+#if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(sun) || defined(_nec_ews)
# define USE_SETVBUF
#endif
@@ -1380,6 +1380,7 @@ rb_io_mode_binmode(mode)
static char*
rb_io_binmode_mode(flags, mode)
int flags;
+ char *mode;
{
char *p = mode;
diff --git a/parse.y b/parse.y
index 60d386b239..c39b2ca3d0 100644
--- a/parse.y
+++ b/parse.y
@@ -2897,7 +2897,6 @@ yylex()
register int c;
int space_seen = 0;
int cmd_state;
- struct kwtable *kw;
cmd_state = command_start;
command_start = Qfalse;
@@ -3714,8 +3713,33 @@ yylex()
else
result = tIVAR;
break;
+
default:
+ if (toklast() == '!' || toklast() == '?') {
+ result = tFID;
+ }
+ else {
+ if (lex_state == EXPR_FNAME) {
+ if ((c = nextc()) == '=' && !peek('~') && !peek('>') &&
+ (!peek('=') || lex_p + 1 < lex_pend && lex_p[1] == '>')) {
+ result = tIDENTIFIER;
+ tokadd(c);
+ }
+ else {
+ pushback(c);
+ }
+ }
+ if (result == 0 && ISUPPER(tok()[0])) {
+ result = tCONSTANT;
+ }
+ else {
+ result = tIDENTIFIER;
+ }
+ }
+
if (lex_state != EXPR_DOT) {
+ struct kwtable *kw;
+
/* See if it is a reserved word. */
kw = rb_reserved_word(tok(), toklen());
if (kw) {
@@ -3740,27 +3764,6 @@ yylex()
}
}
- if (toklast() == '!' || toklast() == '?') {
- result = tFID;
- }
- else {
- if (lex_state == EXPR_FNAME) {
- if ((c = nextc()) == '=' && !peek('~') && !peek('>') &&
- (!peek('=') || lex_p + 1 < lex_pend && lex_p[1] == '>')) {
- result = tIDENTIFIER;
- tokadd(c);
- }
- else {
- pushback(c);
- }
- }
- if (result == 0 && ISUPPER(tok()[0])) {
- result = tCONSTANT;
- }
- else {
- result = tIDENTIFIER;
- }
- }
if (lex_state == EXPR_BEG ||
lex_state == EXPR_DOT ||
lex_state == EXPR_ARG ||
diff --git a/re.c b/re.c
index 877ad4c018..7e57b856c1 100644
--- a/re.c
+++ b/re.c
@@ -1397,6 +1397,7 @@ Init_Regexp()
rb_define_method(rb_cRegexp, "===", rb_reg_match, 1);
rb_define_method(rb_cRegexp, "~", rb_reg_match2, 0);
rb_define_method(rb_cRegexp, "match", rb_reg_match_m, 1);
+ rb_define_method(rb_cRegexp, "to_s", rb_reg_inspect, 0);
rb_define_method(rb_cRegexp, "inspect", rb_reg_inspect, 0);
rb_define_method(rb_cRegexp, "source", rb_reg_source, 0);
rb_define_method(rb_cRegexp, "casefold?", rb_reg_casefold_p, 0);
@@ -1425,6 +1426,6 @@ Init_Regexp()
rb_define_method(rb_cMatch, "pre_match", rb_reg_match_pre, 0);
rb_define_method(rb_cMatch, "post_match", rb_reg_match_post, 0);
rb_define_method(rb_cMatch, "to_s", match_to_s, 0);
- rb_define_method(rb_cMatch, "string", match_string, 0);
rb_define_method(rb_cMatch, "inspect", rb_any_to_s, 0);
+ rb_define_method(rb_cMatch, "string", match_string, 0);
}
diff --git a/version.h b/version.h
index 62eae8fa4c..f78f2c3105 100644
--- a/version.h
+++ b/version.h
@@ -1,4 +1,4 @@
#define RUBY_VERSION "1.7.1"
-#define RUBY_RELEASE_DATE "2001-09-03"
+#define RUBY_RELEASE_DATE "2001-09-05"
#define RUBY_VERSION_CODE 171
-#define RUBY_RELEASE_CODE 20010903
+#define RUBY_RELEASE_CODE 20010905