[#31928] securerandom.rb for 1.8 — Tanaka Akira <akr@...>

securerandom.rb を 1.8 に追加し、cgi/session.rb に使わせたい

18 messages 2007/10/03
[#31990] Re: securerandom.rb for 1.8 — "Akinori MUSHA" <knu@...> 2007/10/09

At Wed, 3 Oct 2007 12:49:20 +0900,

[#31992] Re: securerandom.rb for 1.8 — Tanaka Akira <akr@...> 2007/10/09

In article <86k5pwinco.knu@iDaemons.org>,

[#31993] Re: securerandom.rb for 1.8 — "NAKAMURA, Hiroshi" <nakahiro@...> 2007/10/09

-----BEGIN PGP SIGNED MESSAGE-----

[#31936] Rake添付 — Yukihiro Matsumoto <matz@...>

まつもと ゆきひろです

21 messages 2007/10/04
[#31937] Re: Rake添付 — "NAKAMURA, Hiroshi" <nakahiro@...> 2007/10/04

-----BEGIN PGP SIGNED MESSAGE-----

[#31938] Re: Rake添付 — Yukihiro Matsumoto <matz@...> 2007/10/04

まつもと ゆきひろです

[#31941] Re: [ruby-list:44071] Re: Ruby 1.8.6-p111 / 1.8.5-p114 released (Security Fix) — Shugo Maeda <shugo@...>

前田です。

20 messages 2007/10/04
[#31943] Re: [ruby-list:44071] Re: Ruby 1.8.6-p111 / 1.8.5-p114 released (Security Fix) — "NAKAMURA, Hiroshi" <nakahiro@...> 2007/10/05

-----BEGIN PGP SIGNED MESSAGE-----

[#31945] Re: [ruby-list:44071] Re: Ruby 1.8.6-p111 / 1.8.5-p114 released (Security Fix) — Shugo Maeda <shugo@...> 2007/10/05

前田です。

[#31948] Re: [ruby-list:44071] Re: Ruby 1.8.6-p111 / 1.8.5-p114 released (Security Fix) — "NAKAMURA, Hiroshi" <nakahiro@...> 2007/10/05

-----BEGIN PGP SIGNED MESSAGE-----

[#31952] Re: [ruby-list:44071] Re: Ruby 1.8.6-p111 / 1.8.5-p114 released (Security Fix) — Shugo Maeda <shugo@...> 2007/10/05

前田です。

[#31956] Re: [ruby-list:44071] Re: Ruby 1.8.6-p111 / 1.8.5-p114 released (Security Fix) — GOTOU Yuuzou <gotoyuzo@...> 2007/10/06

In message <47063403.3070402@ruby-lang.org>,

[#31960] Re: [ruby-list:44071] Re: Ruby 1.8.6-p111 / 1.8.5-p114 released (Security Fix) — GOTOU Yuuzou <gotoyuzo@...> 2007/10/07

In message <20071006.101915.596518898.gotoyuzo@sawara.priv.tokyo.netlab.jp>,

[#31980] multibyte string/regex literal with escape sequence — "U.Nakamura" <usa@...>

こんにちは、なかむら(う)です。

24 messages 2007/10/09
[#31981] Re: multibyte string/regex literal with escape sequence — Yukihiro Matsumoto <matz@...> 2007/10/09

まつもと ゆきひろです

[#31983] Re: multibyte string/regex literal with escape sequence — "U.Nakamura" <usa@...> 2007/10/09

こんにちは、なかむら(う)です。

[#31984] Re: multibyte string/regex literal with escape sequence — Yukihiro Matsumoto <matz@...> 2007/10/09

まつもと ゆきひろです

[#31986] Re: multibyte string/regex literal with escape sequence — "U.Nakamura" <usa@...> 2007/10/09

こんにちは、なかむら(う)です。

[#31987] Re: multibyte string/regex literal with escape sequence — Yukihiro Matsumoto <matz@...> 2007/10/09

まつもと ゆきひろです

[#32003] Re: multibyte string/regex literal with escape sequence — "U.Nakamura" <usa@...> 2007/10/10

こんにちは、なかむら(う)です。

[#32133] undefined method `now' for DateTime:Class (NoMethodError) — "NAKAMURA, Hiroshi" <nakahiro@...>

-----BEGIN PGP SIGNED MESSAGE-----

12 messages 2007/10/23
[#32135] Re: undefined method `now' for DateTime:Class (NoMethodError) — tadf@... 2007/10/23

どういう状況かよくわかってないのですが、いっそ必ず date 丸ごと読むようにするか、

[#32136] Re: undefined method `now' for DateTime:Class (NoMethodError) — "NAKAMURA, Hiroshi" <nakahiro@...> 2007/10/23

-----BEGIN PGP SIGNED MESSAGE-----

[ruby-dev:32053] Process::Status#to_s

From: Tanaka Akira <akr@...>
Date: 2007-10-14 02:42:08 UTC
List: ruby-dev #32053
現在 Process::Status#to_s は整数な文字列を返します。

% ./ruby -e 'system("exit 1;"); p $?.to_s'
"256"

これはわかりにくいので以下のような文字列を返すのはどうでしょ
うか。

% ./ruby -e 'system("exit 1;"); p $?.to_s'
"pid 21978 exit 1"

signal で死んだ場合:
% ./ruby -e 'system("kill -ILL $$"); puts $?'
pid 7666 SIGILL (signal 4) (core dumped)

signal で止まった場合:
% ./ruby -e 'pid = spawn("kill -TSTP $$"); Process.waitpid pid, Process::WUNTRACED; puts $?'
pid 22014 stopped SIGTSTP (signal 20)

なお、メッセージの生成コードは inspect と共有しており、
inspect の結果も上記の形式を #<Process::Status: ...> で括っ
たものになります。

% ./ruby -e 'system("true"); p $?'
#<Process::Status: pid 7695 exit 0>

Index: process.c
===================================================================
--- process.c	(リビジョン 13695)
+++ process.c	(作業コピー)
@@ -248,20 +248,6 @@
 
 /*
  *  call-seq:
- *     stat.to_s   => string
- *
- *  Equivalent to _stat_<code>.to_i.to_s</code>.
- */
-
-static VALUE
-pst_to_s(VALUE st)
-{
-    return rb_fix2str(pst_to_i(st), 10);
-}
-
-
-/*
- *  call-seq:
  *     stat.pid   => fixnum
  *
  *  Returns the process ID that this status object represents.
@@ -277,34 +263,20 @@
     return rb_iv_get(st, "pid");
 }
 
-
-/*
- *  call-seq:
- *     stat.inspect   => string
- *
- *  Override the inspection method.
- */
-
-static VALUE
-pst_inspect(VALUE st)
+static void
+pst_message(VALUE str, rb_pid_t pid, int status)
 {
-    VALUE pid;
-    int status;
-    VALUE str;
     char buf[256];
-
-    pid = pst_pid(st);
-    status = NUM2INT(st);
-
-    str = rb_sprintf("#<%s: pid=%ld", rb_class2name(CLASS_OF(st)), NUM2LONG(pid));
+    snprintf(buf, sizeof(buf), "pid %ld", (long)pid);
+    rb_str_cat2(str, buf);
     if (WIFSTOPPED(status)) {
 	int stopsig = WSTOPSIG(status);
 	const char *signame = ruby_signal_name(stopsig);
 	if (signame) {
-	    snprintf(buf, sizeof(buf), ",stopped(SIG%s=%d)", signame, stopsig);
+	    snprintf(buf, sizeof(buf), " stopped SIG%s (signal %d)", signame, stopsig);
 	}
 	else {
-	    snprintf(buf, sizeof(buf), ",stopped(%d)", stopsig);
+	    snprintf(buf, sizeof(buf), " stopped signal %d", stopsig);
 	}
 	rb_str_cat2(str, buf);
     }
@@ -312,22 +284,67 @@
 	int termsig = WTERMSIG(status);
 	const char *signame = ruby_signal_name(termsig);
 	if (signame) {
-	    snprintf(buf, sizeof(buf), ",signaled(SIG%s=%d)", signame, termsig);
+	    snprintf(buf, sizeof(buf), " SIG%s (signal %d)", signame, termsig);
 	}
 	else {
-	    snprintf(buf, sizeof(buf), ",signaled(%d)", termsig);
+	    snprintf(buf, sizeof(buf), " signal %d", termsig);
 	}
 	rb_str_cat2(str, buf);
     }
     if (WIFEXITED(status)) {
-	snprintf(buf, sizeof(buf), ",exited(%d)", WEXITSTATUS(status));
+	snprintf(buf, sizeof(buf), " exit %d", WEXITSTATUS(status));
 	rb_str_cat2(str, buf);
     }
 #ifdef WCOREDUMP
     if (WCOREDUMP(status)) {
-	rb_str_cat2(str, ",coredumped");
+	rb_str_cat2(str, " (core dumped)");
     }
 #endif
+}
+
+
+/*
+ *  call-seq:
+ *     stat.to_s   => string
+ *
+ *  Show pid and exit status as a string.
+ */
+
+static VALUE
+pst_to_s(VALUE st)
+{
+    rb_pid_t pid;
+    int status;
+    VALUE str;
+
+    pid = NUM2LONG(pst_pid(st));
+    status = NUM2INT(st);
+
+    str = rb_str_buf_new(0);
+    pst_message(str, pid, status);
+    return str;
+}
+
+
+/*
+ *  call-seq:
+ *     stat.inspect   => string
+ *
+ *  Override the inspection method.
+ */
+
+static VALUE
+pst_inspect(VALUE st)
+{
+    rb_pid_t pid;
+    int status;
+    VALUE str;
+
+    pid = NUM2LONG(pst_pid(st));
+    status = NUM2INT(st);
+
+    str = rb_sprintf("#<%s: ", rb_class2name(CLASS_OF(st)));
+    pst_message(str, pid, status);
     rb_str_cat2(str, ">");
     return str;
 }
-- 
[田中 哲][たなか あきら][Tanaka Akira]

In This Thread

Prev Next