mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
991207
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@577 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
dee96209bf
commit
c18d3740a9
15 changed files with 172 additions and 128 deletions
15
ChangeLog
15
ChangeLog
|
@ -1,13 +1,22 @@
|
|||
Tue Dec 7 11:16:30 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
|
||||
|
||||
* eval.c (Init_eval): calculate stack limit from rlimit where
|
||||
getrlimit(2) is available.
|
||||
|
||||
Tue Dec 7 09:57:33 1999 Katsuyuki Komatsu <komatsu@sarion.co.jp>
|
||||
|
||||
* file.c (rb_file_ftype): should have removed mode_t.
|
||||
|
||||
Mon Dec 6 15:55:30 1999 EGUCHI Osamu <eguchi@shizuokanet.ne.jp>
|
||||
|
||||
* numeric.c (fix_rshift): Fix -1 >> 32 returned 0. (-1 is true)
|
||||
* numeric.c (fix_rshift): Fix -1 >> 32 returned 0 (should be -1).
|
||||
|
||||
* numeric.c (fix_rshift): Fix 1 >> -1 returned 0. (2 is true)
|
||||
* numeric.c (fix_rshift): Fix 1 >> -1 returned 0 (should be 2).
|
||||
|
||||
Mon Dec 6 11:47:23 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
|
||||
|
||||
* sprintf.c (rb_f_sprintf): formatted string must be tainted if
|
||||
any of parameters is tainted.
|
||||
any of parameters is a tainted string.
|
||||
|
||||
* file.c (rb_file_s_expand_path): expanded file path need not to
|
||||
be tainted always.
|
||||
|
|
2
ToDo
2
ToDo
|
@ -25,6 +25,7 @@ Hacking Interpreter
|
|||
- use eban's fnmatch
|
||||
- RUBYOPT environment variable
|
||||
- alias $defout $>
|
||||
* retrieve STACK_LEVEL_MAX from users' limit.
|
||||
* remove end_proc registered out of require only
|
||||
* non-blocking open (e.g. for named pipe) for thread
|
||||
* avoid blocking with gethostbyname/gethostbyaddr
|
||||
|
@ -42,6 +43,7 @@ Standard Libraries
|
|||
- Dir.glob(pat){|f|...}
|
||||
- sprintf/printf's $ to specify argument order
|
||||
- Dir.glob("**/*.c") ala zsh
|
||||
- Remove Enumerable#{size,length}
|
||||
* SyntaxError and NameError should not be subclasses of StandardError, maybe.
|
||||
* debugger for thread programming
|
||||
* Struct::new([name,]member,...) ??
|
||||
|
|
4
configure
vendored
4
configure
vendored
|
@ -2199,7 +2199,7 @@ fi
|
|||
|
||||
for ac_hdr in stdlib.h string.h unistd.h limits.h sys/file.h sys/ioctl.h\
|
||||
fcntl.h sys/fcntl.h sys/select.h sys/time.h sys/times.h sys/param.h\
|
||||
syscall.h pwd.h a.out.h utime.h memory.h direct.h
|
||||
syscall.h pwd.h a.out.h utime.h memory.h direct.h sys/resource.h
|
||||
do
|
||||
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
|
||||
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
|
||||
|
@ -3102,7 +3102,7 @@ for ac_func in fmod killpg drand48 random wait4 waitpid syscall getcwd\
|
|||
truncate chsize times utimes fcntl lockf setitimer\
|
||||
setruid seteuid setreuid setrgid setegid setregid\
|
||||
getpgrp setpgrp getpgid setpgid getgroups getpriority\
|
||||
dlopen sigprocmask sigaction _setjmp setsid
|
||||
dlopen sigprocmask sigaction _setjmp setsid getrlimit
|
||||
do
|
||||
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
|
||||
echo "configure:3109: checking for $ac_func" >&5
|
||||
|
|
|
@ -156,7 +156,7 @@ AC_HEADER_STDC
|
|||
AC_HEADER_SYS_WAIT
|
||||
AC_CHECK_HEADERS(stdlib.h string.h unistd.h limits.h sys/file.h sys/ioctl.h\
|
||||
fcntl.h sys/fcntl.h sys/select.h sys/time.h sys/times.h sys/param.h\
|
||||
syscall.h pwd.h a.out.h utime.h memory.h direct.h)
|
||||
syscall.h pwd.h a.out.h utime.h memory.h direct.h sys/resource.h)
|
||||
|
||||
dnl Checks for typedefs, structures, and compiler characteristics.
|
||||
AC_TYPE_UID_T
|
||||
|
@ -180,7 +180,7 @@ AC_CHECK_FUNCS(fmod killpg drand48 random wait4 waitpid syscall getcwd\
|
|||
truncate chsize times utimes fcntl lockf setitimer\
|
||||
setruid seteuid setreuid setrgid setegid setregid\
|
||||
getpgrp setpgrp getpgid setpgid getgroups getpriority\
|
||||
dlopen sigprocmask sigaction _setjmp setsid)
|
||||
dlopen sigprocmask sigaction _setjmp setsid getrlimit)
|
||||
AC_STRUCT_TIMEZONE
|
||||
if test "$ac_cv_func_strftime" = no; then
|
||||
AC_TRY_LINK([],
|
||||
|
|
36
enum.c
36
enum.c
|
@ -198,7 +198,7 @@ min_i(i, min)
|
|||
*min = i;
|
||||
else {
|
||||
cmp = rb_funcall(i, id_cmp, 1, *min);
|
||||
if (FIX2LONG(cmp) < 0)
|
||||
if (NUM2LONG(cmp) < 0)
|
||||
*min = i;
|
||||
}
|
||||
return Qnil;
|
||||
|
@ -214,7 +214,7 @@ min_ii(i, min)
|
|||
*min = i;
|
||||
else {
|
||||
cmp = rb_yield(rb_assoc_new(i, *min));
|
||||
if (FIX2LONG(cmp) < 0)
|
||||
if (NUM2LONG(cmp) < 0)
|
||||
*min = i;
|
||||
}
|
||||
return Qnil;
|
||||
|
@ -240,7 +240,7 @@ max_i(i, max)
|
|||
*max = i;
|
||||
else {
|
||||
cmp = rb_funcall(i, id_cmp, 1, *max);
|
||||
if (FIX2LONG(cmp) > 0)
|
||||
if (NUM2LONG(cmp) > 0)
|
||||
*max = i;
|
||||
}
|
||||
return Qnil;
|
||||
|
@ -256,7 +256,7 @@ max_ii(i, max)
|
|||
*max = i;
|
||||
else {
|
||||
cmp = rb_yield(rb_assoc_new(i, *max));
|
||||
if (FIX2LONG(cmp) > 0)
|
||||
if (NUM2LONG(cmp) > 0)
|
||||
*max = i;
|
||||
}
|
||||
return Qnil;
|
||||
|
@ -332,32 +332,6 @@ enum_member(obj, val)
|
|||
return Qfalse;
|
||||
}
|
||||
|
||||
static VALUE
|
||||
length_i(i, length)
|
||||
VALUE i;
|
||||
int *length;
|
||||
{
|
||||
(*length)++;
|
||||
return Qnil;
|
||||
}
|
||||
|
||||
static VALUE
|
||||
enum_length(obj)
|
||||
VALUE obj;
|
||||
{
|
||||
int length = 0;
|
||||
|
||||
rb_iterate(rb_each, obj, length_i, (VALUE)&length);
|
||||
return INT2FIX(length);
|
||||
}
|
||||
|
||||
VALUE
|
||||
rb_enum_length(obj)
|
||||
VALUE obj;
|
||||
{
|
||||
return enum_length(obj);
|
||||
}
|
||||
|
||||
static VALUE
|
||||
each_with_index_i(val, indexp)
|
||||
VALUE val;
|
||||
|
@ -403,8 +377,6 @@ Init_Enumerable()
|
|||
rb_define_method(rb_mEnumerable,"index", enum_index, 1);
|
||||
rb_define_method(rb_mEnumerable,"member?", enum_member, 1);
|
||||
rb_define_method(rb_mEnumerable,"include?", enum_member, 1);
|
||||
rb_define_method(rb_mEnumerable,"length", enum_length, 0);
|
||||
rb_define_method(rb_mEnumerable,"size", enum_length, 0);
|
||||
rb_define_method(rb_mEnumerable,"each_with_index", enum_each_with_index, 0);
|
||||
|
||||
id_eqq = rb_intern("===");
|
||||
|
|
60
eval.c
60
eval.c
|
@ -49,6 +49,28 @@ char *strrchr _((const char*,const char));
|
|||
#endif
|
||||
#endif
|
||||
|
||||
#include <sys/types.h>
|
||||
#ifdef HAVE_SYS_TIME_H
|
||||
# include <sys/time.h>
|
||||
#else
|
||||
#ifndef NT
|
||||
struct timeval {
|
||||
long tv_sec; /* seconds */
|
||||
long tv_usec; /* and microseconds */
|
||||
};
|
||||
#endif /* NT */
|
||||
#endif
|
||||
#include <signal.h>
|
||||
#include <errno.h>
|
||||
|
||||
#ifdef HAVE_SYS_SELECT_H
|
||||
#include <sys/select.h>
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_SYS_RESOURCE_H
|
||||
#include <sys/resource.h>
|
||||
#endif
|
||||
|
||||
VALUE rb_cProc;
|
||||
static VALUE rb_cBinding;
|
||||
static VALUE proc_call _((VALUE,VALUE));
|
||||
|
@ -3714,9 +3736,14 @@ rb_undefined(obj, id, argc, argv, call_status)
|
|||
extern int _stacksize;
|
||||
# define STACK_LEVEL_MAX (_stacksize - 4096)
|
||||
#else
|
||||
#ifdef HAVE_GETRLIMIT
|
||||
static int STACK_LEVEL_MAX = 655300;
|
||||
#else
|
||||
# define STACK_LEVEL_MAX 655300
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
extern VALUE *rb_gc_stack_start;
|
||||
static int
|
||||
stack_length()
|
||||
|
@ -3844,7 +3871,7 @@ rb_call0(klass, recv, id, argc, argv, body, nosuper)
|
|||
break;
|
||||
}
|
||||
|
||||
if ((++tick & 0x3ff) == 0) {
|
||||
if ((++tick & 0xff) == 0) {
|
||||
CHECK_INTS; /* better than nothing */
|
||||
if (stack_length() > STACK_LEVEL_MAX) {
|
||||
rb_raise(rb_eSysStackError, "stack level too deep");
|
||||
|
@ -5389,6 +5416,19 @@ Init_eval()
|
|||
rb_global_variable(&trace_func);
|
||||
|
||||
rb_define_virtual_variable("$SAFE", safe_getter, safe_setter);
|
||||
|
||||
#ifdef HAVE_GETRLIMIT
|
||||
{
|
||||
struct rlimit rlim;
|
||||
|
||||
if (getrlimit(RLIMIT_STACK, &rlim) == 0) {
|
||||
double space = (double)rlim.rlim_cur*0.2;
|
||||
|
||||
if (space > 256*1024) space = 256*1024;
|
||||
STACK_LEVEL_MAX = (rlim.rlim_cur - space) / 4;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
VALUE rb_f_autoload();
|
||||
|
@ -6042,24 +6082,6 @@ int rb_thread_pending = 0;
|
|||
|
||||
VALUE rb_cThread;
|
||||
|
||||
#include <sys/types.h>
|
||||
#ifdef HAVE_SYS_TIME_H
|
||||
# include <sys/time.h>
|
||||
#else
|
||||
#ifndef NT
|
||||
struct timeval {
|
||||
long tv_sec; /* seconds */
|
||||
long tv_usec; /* and microseconds */
|
||||
};
|
||||
#endif /* NT */
|
||||
#endif
|
||||
#include <signal.h>
|
||||
#include <errno.h>
|
||||
|
||||
#ifdef HAVE_SYS_SELECT_H
|
||||
#include <sys/select.h>
|
||||
#endif
|
||||
|
||||
extern VALUE rb_last_status;
|
||||
|
||||
enum thread_status {
|
||||
|
|
24
file.c
24
file.c
|
@ -731,35 +731,35 @@ rb_file_s_size(obj, fname)
|
|||
}
|
||||
|
||||
static VALUE
|
||||
rb_file_ftype(mode)
|
||||
mode_t mode;
|
||||
rb_file_ftype(st)
|
||||
struct stat *st;
|
||||
{
|
||||
char *t;
|
||||
|
||||
if (S_ISREG(mode)) {
|
||||
if (S_ISREG(st->st_mode)) {
|
||||
t = "file";
|
||||
} else if (S_ISDIR(mode)) {
|
||||
} else if (S_ISDIR(st->st_mode)) {
|
||||
t = "directory";
|
||||
} else if (S_ISCHR(mode)) {
|
||||
} else if (S_ISCHR(st->st_mode)) {
|
||||
t = "characterSpecial";
|
||||
}
|
||||
#ifdef S_ISBLK
|
||||
else if (S_ISBLK(mode)) {
|
||||
else if (S_ISBLK(st->st_mode)) {
|
||||
t = "blockSpecial";
|
||||
}
|
||||
#endif
|
||||
#ifdef S_ISFIFO
|
||||
else if (S_ISFIFO(mode)) {
|
||||
else if (S_ISFIFO(st->st_mode)) {
|
||||
t = "fifo";
|
||||
}
|
||||
#endif
|
||||
#ifdef S_ISLNK
|
||||
else if (S_ISLNK(mode)) {
|
||||
else if (S_ISLNK(st->st_mode)) {
|
||||
t = "link";
|
||||
}
|
||||
#endif
|
||||
#ifdef S_ISSOCK
|
||||
else if (S_ISSOCK(mode)) {
|
||||
else if (S_ISSOCK(st->st_mode)) {
|
||||
t = "socket";
|
||||
}
|
||||
#endif
|
||||
|
@ -786,7 +786,7 @@ rb_file_s_ftype(obj, fname)
|
|||
}
|
||||
#endif
|
||||
|
||||
return rb_file_ftype(st.st_mode);
|
||||
return rb_file_ftype(&st);
|
||||
}
|
||||
|
||||
static VALUE
|
||||
|
@ -1183,7 +1183,6 @@ rb_file_s_expand_path(argc, argv)
|
|||
s = STR2CSTR(fname);
|
||||
p = buf;
|
||||
if (s[0] == '~') {
|
||||
tainted = 1;
|
||||
if (isdirsep(s[1]) || s[1] == '\0') {
|
||||
char *dir = getenv("HOME");
|
||||
|
||||
|
@ -1193,6 +1192,7 @@ rb_file_s_expand_path(argc, argv)
|
|||
strcpy(buf, dir);
|
||||
p = &buf[strlen(buf)];
|
||||
s++;
|
||||
tainted = 1;
|
||||
}
|
||||
else {
|
||||
#ifdef HAVE_PWD_H
|
||||
|
@ -1670,7 +1670,7 @@ static VALUE
|
|||
rb_stat_ftype(obj)
|
||||
VALUE obj;
|
||||
{
|
||||
return rb_file_ftype(get_stat(obj)->st_mode);
|
||||
return rb_file_ftype(get_stat(obj));
|
||||
}
|
||||
|
||||
static VALUE
|
||||
|
|
7
hash.c
7
hash.c
|
@ -550,7 +550,7 @@ rb_hash_replace(hash, hash2)
|
|||
}
|
||||
|
||||
static VALUE
|
||||
rb_hash_length(hash)
|
||||
rb_hash_size(hash)
|
||||
VALUE hash;
|
||||
{
|
||||
return INT2FIX(RHASH(hash)->tbl->num_entries);
|
||||
|
@ -1454,8 +1454,8 @@ Init_Hash()
|
|||
rb_define_method(rb_cHash,"index", rb_hash_index, 1);
|
||||
rb_define_method(rb_cHash,"indexes", rb_hash_indexes, -1);
|
||||
rb_define_method(rb_cHash,"indices", rb_hash_indexes, -1);
|
||||
rb_define_method(rb_cHash,"length", rb_hash_length, 0);
|
||||
rb_define_alias(rb_cHash, "size", "length");
|
||||
rb_define_method(rb_cHash,"size", rb_hash_size, 0);
|
||||
rb_define_method(rb_cHash,"length", rb_hash_size, 0);
|
||||
rb_define_method(rb_cHash,"empty?", rb_hash_empty_p, 0);
|
||||
|
||||
rb_define_method(rb_cHash,"each", rb_hash_each_pair, 0);
|
||||
|
@ -1503,6 +1503,7 @@ Init_Hash()
|
|||
rb_define_singleton_method(envtbl,"index", env_index, 1);
|
||||
rb_define_singleton_method(envtbl,"indexes", env_indexes, -1);
|
||||
rb_define_singleton_method(envtbl,"indices", env_indexes, -1);
|
||||
rb_define_singleton_method(envtbl,"size", env_size, 0);
|
||||
rb_define_singleton_method(envtbl,"length", env_size, 0);
|
||||
rb_define_singleton_method(envtbl,"empty?", env_empty_p, 0);
|
||||
rb_define_singleton_method(envtbl,"keys", env_keys, 0);
|
||||
|
|
1
intern.h
1
intern.h
|
@ -233,6 +233,7 @@ void rb_syswait _((int));
|
|||
/* range.c */
|
||||
VALUE rb_range_new _((VALUE, VALUE, int));
|
||||
VALUE rb_range_beg_len _((VALUE, long*, long*, long, int));
|
||||
VALUE rb_length_by_each _((VALUE));
|
||||
/* re.c */
|
||||
VALUE rb_reg_nth_defined _((int, VALUE));
|
||||
VALUE rb_reg_nth_match _((int, VALUE));
|
||||
|
|
107
lib/cgi.rb
107
lib/cgi.rb
|
@ -5,7 +5,7 @@ $Date$
|
|||
|
||||
CGI.rb
|
||||
|
||||
Version 1.01
|
||||
Version 1.10
|
||||
|
||||
Copyright (C) 1999 Network Applied Communication Laboratory, Inc.
|
||||
|
||||
|
@ -24,7 +24,7 @@ Wakou Aoyama <wakou@fsinet.or.jp>
|
|||
|
||||
# returns true if form has 'field_name'
|
||||
cgi.has_key?('field_name')
|
||||
cgi.key?('field_name')
|
||||
cgi.has_key?('field_name')
|
||||
cgi.include?('field_name')
|
||||
|
||||
|
||||
|
@ -182,7 +182,7 @@ class CGI
|
|||
EOL = CR + LF
|
||||
v = $-v
|
||||
$-v = false
|
||||
VERSION = "1.01"
|
||||
VERSION = "1.10"
|
||||
RELEASE_DATE = "$Date$"
|
||||
$-v = v
|
||||
|
||||
|
@ -391,11 +391,11 @@ status:
|
|||
options = { "type" => options }
|
||||
end
|
||||
|
||||
unless options.key?("type")
|
||||
unless options.has_key?("type")
|
||||
options["type"] = "text/html"
|
||||
end
|
||||
|
||||
if options.key?("charset")
|
||||
if options.has_key?("charset")
|
||||
options["type"].concat( "; charset=" )
|
||||
options["type"].concat( options.delete("charset") )
|
||||
end
|
||||
|
@ -411,40 +411,40 @@ status:
|
|||
"Date: " + CGI::rfc1123_date(Time.now) + EOL
|
||||
)
|
||||
|
||||
unless options.key?("server")
|
||||
unless options.has_key?("server")
|
||||
options["server"] = (env_table['SERVER_SOFTWARE'] or "")
|
||||
end
|
||||
|
||||
unless options.key?("connection")
|
||||
unless options.has_key?("connection")
|
||||
options["connection"] = "close"
|
||||
end
|
||||
|
||||
end
|
||||
options.delete("status")
|
||||
|
||||
if options.key?("server")
|
||||
if options.has_key?("server")
|
||||
buf.concat("Server: " + options.delete("server") + EOL)
|
||||
end
|
||||
|
||||
if options.key?("connection")
|
||||
if options.has_key?("connection")
|
||||
buf.concat("Connection: " + options.delete("connection") + EOL)
|
||||
end
|
||||
|
||||
buf.concat("Content-Type: " + options.delete("type") + EOL)
|
||||
|
||||
if options.key?("length")
|
||||
if options.has_key?("length")
|
||||
buf.concat("Content-Length: " + options.delete("length").to_s + EOL)
|
||||
end
|
||||
|
||||
if options.key?("language")
|
||||
if options.has_key?("language")
|
||||
buf.concat("Content-Language: " + options.delete("language") + EOL)
|
||||
end
|
||||
|
||||
if options.key?("expires")
|
||||
if options.has_key?("expires")
|
||||
buf.concat("Expires: " + CGI::rfc1123_date( options.delete("expires") ) + EOL)
|
||||
end
|
||||
|
||||
if options.key?("cookie")
|
||||
if options.has_key?("cookie")
|
||||
if options["cookie"].kind_of?(String) or
|
||||
options["cookie"].kind_of?(Cookie)
|
||||
buf.concat("Set-Cookie: " + options.delete("cookie").to_s + EOL)
|
||||
|
@ -468,7 +468,7 @@ status:
|
|||
buf.concat(key + ": " + value + EOL)
|
||||
}
|
||||
|
||||
if env_table['MOD_RUBY']
|
||||
if defined?(MOD_RUBY)
|
||||
buf.scan(/([^:]+): (.+)#{EOL}/n){
|
||||
Apache::request[$1] = $2
|
||||
}
|
||||
|
@ -518,18 +518,18 @@ convert string charset, and set language to "ja".
|
|||
options = { "type" => options } if options.kind_of?(String)
|
||||
content = yield
|
||||
|
||||
if options.key?("charset")
|
||||
if options.has_key?("charset")
|
||||
require "nkf"
|
||||
case options["charset"]
|
||||
when /iso-2022-jp/ni
|
||||
content = NKF::nkf('-j', content)
|
||||
options["language"] = "ja" unless options.key?("language")
|
||||
options["language"] = "ja" unless options.has_key?("language")
|
||||
when /euc-jp/ni
|
||||
content = NKF::nkf('-e', content)
|
||||
options["language"] = "ja" unless options.key?("language")
|
||||
options["language"] = "ja" unless options.has_key?("language")
|
||||
when /shift_jis/ni
|
||||
content = NKF::nkf('-s', content)
|
||||
options["language"] = "ja" unless options.key?("language")
|
||||
options["language"] = "ja" unless options.has_key?("language")
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -588,7 +588,7 @@ convert string charset, and set language to "ja".
|
|||
else
|
||||
name
|
||||
end
|
||||
unless options.key?("name")
|
||||
unless options.has_key?("name")
|
||||
raise ArgumentError, "`name' required"
|
||||
end
|
||||
|
||||
|
@ -653,7 +653,7 @@ convert string charset, and set language to "ja".
|
|||
name, values = pairs.split('=',2)
|
||||
name = CGI::unescape(name)
|
||||
values = values.split('&').filter{|v| CGI::unescape(v) }
|
||||
if cookies.key?(name)
|
||||
if cookies.has_key?(name)
|
||||
cookies[name].value.push(*values)
|
||||
else
|
||||
cookies[name] = Cookie::new({ "name" => name, "value" => values })
|
||||
|
@ -675,7 +675,7 @@ convert string charset, and set language to "ja".
|
|||
|
||||
query.split(/[&;]/n).each do |pairs|
|
||||
key, value = pairs.split('=',2).filter{|v| CGI::unescape(v) }
|
||||
if params.key?(key)
|
||||
if params.has_key?(key)
|
||||
params[key].push(value)
|
||||
else
|
||||
params[key] = [value]
|
||||
|
@ -812,7 +812,7 @@ convert string charset, and set language to "ja".
|
|||
/Content-Disposition:.* name="?([^\";]*)"?/ni === head
|
||||
name = $1.dup
|
||||
|
||||
if params.key?(name)
|
||||
if params.has_key?(name)
|
||||
params[name].push(body)
|
||||
else
|
||||
params[name] = [body]
|
||||
|
@ -863,7 +863,7 @@ convert string charset, and set language to "ja".
|
|||
@params = CGI::parse(
|
||||
case env_table['REQUEST_METHOD']
|
||||
when "GET", "HEAD"
|
||||
if env_table['MOD_RUBY']
|
||||
if defined?(MOD_RUBY)
|
||||
Apache::request.args or ""
|
||||
else
|
||||
env_table['QUERY_STRING'] or ""
|
||||
|
@ -958,8 +958,8 @@ convert string charset, and set language to "ja".
|
|||
# - -
|
||||
def nn_element_def(element)
|
||||
<<-END.gsub(/element\.downcase/n, element.downcase).gsub(/element\.upcase/n, element.upcase)
|
||||
attributes.delete_if{|k,v| v == nil }
|
||||
"<element.upcase" + attributes.collect{|name, value|
|
||||
next if value == nil
|
||||
" " + CGI::escapeHTML(name) +
|
||||
if true == value
|
||||
""
|
||||
|
@ -979,8 +979,8 @@ convert string charset, and set language to "ja".
|
|||
# - O EMPTY
|
||||
def nOE_element_def(element)
|
||||
<<-END.gsub(/element\.downcase/n, element.downcase).gsub(/element\.upcase/n, element.upcase)
|
||||
attributes.delete_if{|k,v| v == nil }
|
||||
"<element.upcase" + attributes.collect{|name, value|
|
||||
next if value == nil
|
||||
" " + CGI::escapeHTML(name) +
|
||||
if true == value
|
||||
""
|
||||
|
@ -994,8 +994,8 @@ convert string charset, and set language to "ja".
|
|||
# O O or - O
|
||||
def nO_element_def(element)
|
||||
<<-END.gsub(/element\.downcase/n, element.downcase).gsub(/element\.upcase/n, element.upcase)
|
||||
attributes.delete_if{|k,v| v == nil }
|
||||
"<element.upcase" + attributes.collect{|name, value|
|
||||
next if value == nil
|
||||
" " + CGI::escapeHTML(name) +
|
||||
if true == value
|
||||
""
|
||||
|
@ -1210,10 +1210,10 @@ convert string charset, and set language to "ja".
|
|||
{ "METHOD" => method, "ACTION" => action,
|
||||
"ENCTYPE" => enctype }
|
||||
else
|
||||
unless method.key?("METHOD")
|
||||
unless method.has_key?("METHOD")
|
||||
method["METHOD"] = method
|
||||
end
|
||||
unless method.key?("ENCTYPE")
|
||||
unless method.has_key?("ENCTYPE")
|
||||
method["ENCTYPE"] = enctype
|
||||
end
|
||||
method
|
||||
|
@ -1298,7 +1298,7 @@ convert string charset, and set language to "ja".
|
|||
pretty = attributes.delete("PRETTY")
|
||||
buf = ""
|
||||
|
||||
if attributes.key?("DOCTYPE")
|
||||
if attributes.has_key?("DOCTYPE")
|
||||
if attributes["DOCTYPE"]
|
||||
buf.concat( attributes.delete("DOCTYPE") )
|
||||
else
|
||||
|
@ -1381,10 +1381,10 @@ convert string charset, and set language to "ja".
|
|||
{ "METHOD" => "post", "ACTION" => action,
|
||||
"ENCTYPE" => enctype }
|
||||
else
|
||||
unless action.key?("METHOD")
|
||||
unless action.has_key?("METHOD")
|
||||
action["METHOD"] = "post"
|
||||
end
|
||||
unless action.key?("ENCTYPE")
|
||||
unless action.has_key?("ENCTYPE")
|
||||
action["ENCTYPE"] = enctype
|
||||
end
|
||||
action
|
||||
|
@ -1837,27 +1837,18 @@ convert string charset, and set language to "ja".
|
|||
|
||||
|
||||
def initialize(type = "query")
|
||||
@params = nil
|
||||
@cookies = nil
|
||||
extend QueryExtension
|
||||
if defined?(CGI_PARAMS)
|
||||
@params = CGI_PARAMS.nil? ? nil : CGI_PARAMS.dup
|
||||
@cookies = CGI_COOKIES.nil? ? nil : CGI_COOKIES.dup
|
||||
else
|
||||
initialize_query() # set @params, @cookies
|
||||
eval "CGI_PARAMS = @params.nil? ? nil : @params.dup"
|
||||
eval "CGI_COOKIES = @cookies.nil? ? nil : @cookies.dup"
|
||||
end
|
||||
@output_cookies = nil
|
||||
@output_hidden = nil
|
||||
|
||||
extend QueryExtension
|
||||
|
||||
#if defined? CGI::PARAMS
|
||||
# @params = "C" + (CGI::PARAMS.nil? ? nil : CGI::PARAMS.dup).inspect
|
||||
# @cookies = "C" + (CGI::COOKIES.nil? ? nil : CGI::COOKIES.dup).inspect
|
||||
#else
|
||||
initialize_query()
|
||||
# @params, @cookies initialized in initialize_query
|
||||
# eval "PARAMS = @params.nil? ? nil : @params.dup"
|
||||
# eval "COOKIES = @cookies.nil? ? nil : @cookies.dup"
|
||||
# at_exit {
|
||||
# remove_const(PARAMS)
|
||||
# remove_const(COOKIES)
|
||||
# }
|
||||
#end
|
||||
|
||||
case type
|
||||
when "html3"
|
||||
extend Html3
|
||||
|
@ -1873,6 +1864,17 @@ convert string charset, and set language to "ja".
|
|||
extend HtmlExtension
|
||||
end
|
||||
end
|
||||
|
||||
if defined?(MOD_RUBY) and (RUBY_VERSION < "1.4.3")
|
||||
raise "Please, use ruby1.4.3 or later."
|
||||
else
|
||||
at_exit() do
|
||||
if defined?(CGI_PARAMS)
|
||||
remove_const(:CGI_PARAMS)
|
||||
remove_const(:CGI_COOKIES)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
|
@ -1880,6 +1882,13 @@ end
|
|||
|
||||
== HISTRY
|
||||
|
||||
=== Version 1.10 - wakou
|
||||
|
||||
1999/12/06 20:16:34
|
||||
|
||||
- can make many CGI objects.
|
||||
- if use mod_ruby, then require ruby1.4.3 or later.
|
||||
|
||||
=== Version 1.01 - wakou
|
||||
|
||||
1999/11/29 21:35:58
|
||||
|
|
21
range.c
21
range.c
|
@ -262,6 +262,25 @@ range_inspect(range)
|
|||
return str;
|
||||
}
|
||||
|
||||
static VALUE
|
||||
length_i(i, length)
|
||||
VALUE i;
|
||||
int *length;
|
||||
{
|
||||
(*length)++;
|
||||
return Qnil;
|
||||
}
|
||||
|
||||
VALUE
|
||||
rb_length_by_each(obj)
|
||||
VALUE obj;
|
||||
{
|
||||
int length = 0;
|
||||
|
||||
rb_iterate(rb_each, obj, length_i, (VALUE)&length);
|
||||
return INT2FIX(length);
|
||||
}
|
||||
|
||||
static VALUE
|
||||
range_length(range)
|
||||
VALUE range;
|
||||
|
@ -284,7 +303,7 @@ range_length(range)
|
|||
}
|
||||
}
|
||||
if (!rb_obj_is_kind_of(beg, rb_cNumeric)) {
|
||||
return rb_enum_length(range);
|
||||
return rb_length_by_each(range);
|
||||
}
|
||||
size = rb_funcall(end, '-', 1, beg);
|
||||
if (!EXCL(range)) {
|
||||
|
|
4
ruby.c
4
ruby.c
|
@ -73,7 +73,7 @@ usage(name)
|
|||
const char *name;
|
||||
{
|
||||
/* This message really ought to be max 23 lines.
|
||||
* Removed -h because the user already knows that opton. Others? */
|
||||
* Removed -h because the user already knows that option. Others? */
|
||||
|
||||
static char *usage_msg[] = {
|
||||
"-0[octal] specify record separator (\\0, if no argument)",
|
||||
|
@ -621,9 +621,9 @@ proc_options(argc, argv)
|
|||
argc--; argv++;
|
||||
}
|
||||
|
||||
process_sflag();
|
||||
ruby_script(script);
|
||||
ruby_set_argv(argc, argv);
|
||||
process_sflag();
|
||||
|
||||
Init_ext(); /* should be called here for some reason :-( */
|
||||
require_libraries();
|
||||
|
|
2
string.c
2
string.c
|
@ -2603,7 +2603,7 @@ Init_String()
|
|||
rb_define_method(rb_cString, "[]", rb_str_aref_method, -1);
|
||||
rb_define_method(rb_cString, "[]=", rb_str_aset_method, -1);
|
||||
rb_define_method(rb_cString, "length", rb_str_length, 0);
|
||||
rb_define_alias(rb_cString, "size", "length");
|
||||
rb_define_method(rb_cString, "size", rb_str_length, 0);
|
||||
rb_define_method(rb_cString, "empty?", rb_str_empty, 0);
|
||||
rb_define_method(rb_cString, "=~", rb_str_match, 1);
|
||||
rb_define_method(rb_cString, "~", rb_str_match2, 0);
|
||||
|
|
9
struct.c
9
struct.c
|
@ -547,6 +547,13 @@ rb_struct_hash(s)
|
|||
return INT2FIX(h);
|
||||
}
|
||||
|
||||
static VALUE
|
||||
rb_struct_size(s)
|
||||
VALUE s;
|
||||
{
|
||||
return INT2FIX(RSTRUCT(s)->len);
|
||||
}
|
||||
|
||||
void
|
||||
Init_Struct()
|
||||
{
|
||||
|
@ -566,6 +573,8 @@ Init_Struct()
|
|||
rb_define_method(rb_cStruct, "inspect", rb_struct_inspect, 0);
|
||||
rb_define_method(rb_cStruct, "to_a", rb_struct_to_a, 0);
|
||||
rb_define_method(rb_cStruct, "values", rb_struct_to_a, 0);
|
||||
rb_define_method(rb_cStruct, "size", rb_struct_size, 0);
|
||||
rb_define_method(rb_cStruct, "length", rb_struct_size, 0);
|
||||
|
||||
rb_define_method(rb_cStruct, "each", rb_struct_each, 0);
|
||||
rb_define_method(rb_cStruct, "[]", rb_struct_aref, 1);
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
#define RUBY_VERSION "1.5.0"
|
||||
#define RUBY_RELEASE_DATE "1999-12-06"
|
||||
#define RUBY_RELEASE_DATE "1999-12-07"
|
||||
#define RUBY_VERSION_CODE 150
|
||||
#define RUBY_RELEASE_CODE 19991206
|
||||
#define RUBY_RELEASE_CODE 19991207
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue