diff options
-rw-r--r-- | ChangeLog | 14 | ||||
-rw-r--r-- | hash.c | 5 | ||||
-rw-r--r-- | intern.h | 1 | ||||
-rw-r--r-- | lib/cgi/session/pstore.rb | 78 | ||||
-rw-r--r-- | lib/matrix.rb | 53 | ||||
-rw-r--r-- | process.c | 6 |
6 files changed, 98 insertions, 59 deletions
@@ -1,7 +1,17 @@ +Tue Jul 15 14:38:21 2003 Yukihiro Matsumoto <[email protected]> + + * lib/matrix.rb: remove elements conversion to_f, to_i, to_r. + + * lib/cgi/session/pstore.rb: add new file. + Tue Jul 15 03:30:41 2003 why the lucky stiff <[email protected]> - * ext/syck/rubyext.c (syck_mark_emitter): forgot to rb_gc_mark the - outgoing IO object. + * ext/syck/rubyext.c (syck_mark_emitter): forgot to rb_gc_mark the + outgoing IO object. + +Sun Jul 13 14:55:36 2003 Koji Arai <[email protected]> + + * process.c (proc_getgroups, proc_setmaxgroups): fix typo. Sat Jul 12 17:01:28 2003 NAKAMURA Usaku <[email protected]> @@ -1019,10 +1019,11 @@ env_delete(obj, name) ruby_setenv(nam, 0); #ifdef ENV_IGNORECASE - if (strcasecmp(nam, PATH_ENV) == 0) { + if (strcasecmp(nam, PATH_ENV) == 0) #else - if (strcmp(nam, PATH_ENV) == 0) { + if (strcmp(nam, PATH_ENV) == 0) #endif + { path_tainted = 0; } return value; @@ -289,6 +289,7 @@ VALUE rb_obj_is_kind_of _((VALUE, VALUE)); VALUE rb_obj_alloc _((VALUE)); VALUE rb_obj_clone _((VALUE)); VALUE rb_obj_dup _((VALUE)); +VALUE rb_obj_init_copy _((VALUE,VALUE)); VALUE rb_obj_taint _((VALUE)); VALUE rb_obj_tainted _((VALUE)); VALUE rb_obj_untaint _((VALUE)); diff --git a/lib/cgi/session/pstore.rb b/lib/cgi/session/pstore.rb new file mode 100644 index 0000000000..d681d994a9 --- /dev/null +++ b/lib/cgi/session/pstore.rb @@ -0,0 +1,78 @@ +require 'cgi/session' +require 'pstore' + +class CGI + class Session + def []=(key, val) + unless @write_lock + @write_lock = true + end + unless @data + @data = @dbman.restore + end + #@data[key] = String(val) + @data[key] = val + end + + class PStore + def check_id(id) + /[^0-9a-zA-Z]/ =~ id.to_s ? false : true + end + + def initialize session, option={} + dir = option['tmpdir'] || ENV['TMP'] || '/tmp' + prefix = option['prefix'] || '' + id = session.session_id + unless check_id(id) + raise ArgumentError, "session_id `%s' is invalid" % id + end + path = dir+"/"+prefix+id + path.untaint + unless File::exist? path + @hash = {} + end + @p = ::PStore.new path + end + + def restore + unless @hash + @p.transaction do + begin + @hash = @p['hash'] + rescue + @hash = {} + end + end + end + @hash + end + + def update + @p.transaction do + @p['hash'] = @hash + end + end + + def close + update + end + + def delete + path = @p.path + File::unlink path + end + + end + end +end + +if $0 == __FILE__ + STDIN.reopen("/dev/null") + cgi = CGI.new + session = CGI::Session.new cgi, 'database_manager' => CGI::Session::PStore + session['key'] = {'k' => 'v'} + puts session['key'].class + fail unless Hash === session['key'] + puts session['key'].inspect + fail unless session['key'].inspect == '{"k"=>"v"}' +end diff --git a/lib/matrix.rb b/lib/matrix.rb index fcb16d6c42..8e56fcbd97 100644 --- a/lib/matrix.rb +++ b/lib/matrix.rb @@ -126,13 +126,7 @@ # column_vectors # array of column vectors # to_a -# converts each element to Array -# to_f -# converts each element to Float -# to_i -# converts each element to Integer -# to_r -# converts each element to Rational +# converts to Array of Arrays # PRINTING: # to_s # returns string representation @@ -163,9 +157,6 @@ # CONVERTING: # covector # to_a -# to_f -# to_i -# to_r # coerce(other) # PRINTING: # to_s @@ -936,27 +927,6 @@ class Matrix @rows.collect{|row| row.collect{|e| e}} end - # - # Applies #to_f to all elements to return a new matrix. - # - def to_f - collect{|e| e.to_f} - end - - # - # Applies #to_i to all elements to return a new matrix. - # - def to_i - collect{|e| e.to_i} - end - - # - # Applies #to_r to all elements to return a new matrix. - # - def to_r - collect{|e| e.to_r} - end - #-- # PRINTING -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- #++ @@ -1315,27 +1285,6 @@ class Vector end # - # Applies #to_f to each element to produce a new vector. - # - def to_f - collect{|e| e.to_f} - end - - # - # Applies #to_i to each element to produce a new vector. - # - def to_i - collect{|e| e.to_i} - end - - # - # Applies #to_f to each element to produce a new vector. - # - def to_r - collect{|e| e.to_r} - end - - # # FIXME: describe Vector#coerce. # def coerce(other) @@ -1231,13 +1231,13 @@ proc_getgroups(VALUE obj) { #ifdef HAVE_GETGROUPS VALUE ary; - size_t ngroups = 32; + size_t ngroups; gid_t *groups; int i; groups = ALLOCA_N(gid_t, maxgroups); - ngroups = getgroups(ngroups, groups); + ngroups = getgroups(maxgroups, groups); if (ngroups == -1) rb_sys_fail(0); @@ -1312,7 +1312,7 @@ static VALUE proc_setmaxgroups(obj, val) VALUE obj; { - size_t ngroups = INT2FIX(val); + size_t ngroups = FIX2INT(val); if (ngroups > 4096) ngroups = 4096; |