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/branches/ruby_1_4@902 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
0460efb78b
commit
6f0e8d1875
5 changed files with 52 additions and 16 deletions
|
|
@ -9,6 +9,14 @@ Sat Aug 19 01:34:02 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
|
|||
|
||||
* ext/sdbm/_sdbm.c (makroom): fill hole with 0 on Win32 too.
|
||||
|
||||
Fri Aug 18 11:06:19 2000 Shugo Maeda <shugo@ruby-lang.org>
|
||||
|
||||
* ext/socket/socket.c (s_accept): start GC on EMFILE/ENFILE.
|
||||
|
||||
Thu Aug 17 16:04:48 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
|
||||
|
||||
* eval.c (is_defined): should clear ruby_errinfo.
|
||||
|
||||
Wed Aug 16 15:30:58 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
|
||||
|
||||
* stable version 1.4.6 released.
|
||||
|
|
|
|||
11
eval.c
11
eval.c
|
|
@ -1556,7 +1556,10 @@ is_defined(self, node, buf)
|
|||
val = CLASS_OF(val);
|
||||
}
|
||||
POP_TAG();
|
||||
if (state) return 0;
|
||||
if (state) {
|
||||
ruby_errinfo = Qnil;
|
||||
return 0;
|
||||
}
|
||||
check_bound:
|
||||
if (rb_method_boundp(val, node->nd_mid, nd_type(node)== NODE_CALL)) {
|
||||
return arg_defined(self, node->nd_args, buf, "method");
|
||||
|
|
@ -1626,7 +1629,10 @@ is_defined(self, node, buf)
|
|||
val = rb_eval(self, node->nd_head);
|
||||
}
|
||||
POP_TAG();
|
||||
if (state) return 0;
|
||||
if (state) {
|
||||
ruby_errinfo = Qnil;
|
||||
return 0;
|
||||
}
|
||||
else {
|
||||
switch (TYPE(val)) {
|
||||
case T_CLASS:
|
||||
|
|
@ -1664,6 +1670,7 @@ is_defined(self, node, buf)
|
|||
if (!state) {
|
||||
return "expression";
|
||||
}
|
||||
ruby_errinfo = Qnil;
|
||||
break;
|
||||
}
|
||||
return 0;
|
||||
|
|
|
|||
|
|
@ -1026,6 +1026,7 @@ s_accept(class, fd, sockaddr, len)
|
|||
socklen_t *len;
|
||||
{
|
||||
int fd2;
|
||||
int retry = 0;
|
||||
|
||||
rb_secure(3);
|
||||
retry:
|
||||
|
|
@ -1035,6 +1036,12 @@ s_accept(class, fd, sockaddr, len)
|
|||
TRAP_END;
|
||||
if (fd2 < 0) {
|
||||
switch (errno) {
|
||||
case EMFILE:
|
||||
case ENFILE:
|
||||
if (retry) break;
|
||||
rb_gc();
|
||||
retry = 1;
|
||||
goto retry;
|
||||
case EINTR:
|
||||
rb_thread_schedule();
|
||||
goto retry;
|
||||
|
|
|
|||
|
|
@ -121,30 +121,40 @@ class CGI < SimpleDelegator
|
|||
RFC822_MONTHS = %w[ Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec ]
|
||||
|
||||
# make rfc1123 date string
|
||||
def rfc1123_date(time)
|
||||
def CGI.rfc1123_date(time)
|
||||
t = time.clone.gmtime
|
||||
return format("%s, %.2d %s %d %.2d:%.2d:%.2d GMT",
|
||||
RFC822_DAYS[t.wday], t.day, RFC822_MONTHS[t.month-1], t.year,
|
||||
t.hour, t.min, t.sec)
|
||||
end
|
||||
def rfc1123_date(time)
|
||||
CGI.rfc1123_date(time)
|
||||
end
|
||||
|
||||
# escape url encode
|
||||
def escape(str)
|
||||
def CGI.escape(str)
|
||||
str.gsub(/[^a-zA-Z0-9_\-.]/n){ sprintf("%%%02X", $&.unpack("C")[0]) }
|
||||
end
|
||||
def escape(str)
|
||||
CGI.escape(str)
|
||||
end
|
||||
|
||||
# unescape url encoded
|
||||
def unescape(str)
|
||||
def CGI.unescape(str)
|
||||
str.gsub(/\+/, ' ').gsub(/%([0-9a-fA-F]{2})/){ [$1.hex].pack("c") }
|
||||
end
|
||||
def unescape(str)
|
||||
CGI.unescape(str)
|
||||
end
|
||||
|
||||
# escape HTML
|
||||
def escapeHTML(str)
|
||||
def CGI.escapeHTML(str)
|
||||
str.gsub(/&/, "&").gsub(/\"/, """).gsub(/>/, ">").gsub(/</, "<")
|
||||
end
|
||||
|
||||
module_function :escape, :unescape, :escapeHTML, :rfc1123_date
|
||||
|
||||
def escapeHTML(str)
|
||||
CGI.escapeHTML(str)
|
||||
end
|
||||
|
||||
# offline mode. read name=value pairs on standard input.
|
||||
def read_from_cmdline
|
||||
require "shellwords.rb"
|
||||
|
|
|
|||
|
|
@ -4,20 +4,20 @@
|
|||
|
||||
module Observable
|
||||
def add_observer(observer)
|
||||
@observer_peers = [] unless @observer_peers
|
||||
@observer_peers = [] unless defined? @observer_peers
|
||||
unless defined? observer.update
|
||||
raise NameError, "observer needs to respond to `update'"
|
||||
end
|
||||
@observer_peers.push observer
|
||||
end
|
||||
def delete_observer(observer)
|
||||
@observer_peers.delete observer if @observer_peers
|
||||
@observer_peers.delete observer if defined? @observer_peers
|
||||
end
|
||||
def delete_observers
|
||||
@observer_peers.clear if @observer_peers
|
||||
@observer_peers.clear if defined? @observer_peers
|
||||
end
|
||||
def count_observers
|
||||
if @observer_peers
|
||||
if defined? @observer_peers
|
||||
@observer_peers.size
|
||||
else
|
||||
0
|
||||
|
|
@ -27,11 +27,15 @@ module Observable
|
|||
@observer_state = state
|
||||
end
|
||||
def changed?
|
||||
@observer_state
|
||||
if defined? @observer_state and @observer_state
|
||||
true
|
||||
else
|
||||
false
|
||||
end
|
||||
end
|
||||
def notify_observers(*arg)
|
||||
if @observer_state
|
||||
if @observer_peers
|
||||
if defined? @observer_state and @observer_state
|
||||
if defined? @observer_peers
|
||||
for i in @observer_peers.dup
|
||||
i.update(*arg)
|
||||
end
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue