[前][次][番号順一覧][スレッド一覧]

ruby-changes:2212

From: ko1@a...
Date: 15 Oct 2007 10:31:20 +0900
Subject: [ruby-changes:2212] akr - Ruby:r13703 (trunk): * process.c (pst_to_s): returns a string such as "pid 10220 exit 1"

akr	2007-10-15 10:31:11 +0900 (Mon, 15 Oct 2007)

  New Revision: 13703

  Modified files:
    trunk/ChangeLog
    trunk/process.c

  Log:
    * process.c (pst_to_s): returns a string such as "pid 10220 exit 1"
      instead of "256".  [ruby-dev:32053]
      (pst_inspect): change format
      "#<Process::Status: pid=10220,exited(1)>" to
      "#<Process::Status: pid 10220 exit 1>".


  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ChangeLog?r1=13703&r2=13702
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/process.c?r1=13703&r2=13702

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 13702)
+++ ChangeLog	(revision 13703)
@@ -1,3 +1,11 @@
+Mon Oct 15 10:24:19 2007  Tanaka Akira  <akr@f...>
+
+	* process.c (pst_to_s): returns a string such as "pid 10220 exit 1"
+	  instead of "256".  [ruby-dev:32053]
+	  (pst_inspect): change format
+	  "#<Process::Status: pid=10220,exited(1)>" to
+	  "#<Process::Status: pid 10220 exit 1>".
+
 Mon Oct 15 09:58:07 2007  Nobuyoshi Nakada  <nobu@r...>
 
 	* marshal.c (r_bytes0): check if source has enough data.
Index: process.c
===================================================================
--- process.c	(revision 13702)
+++ process.c	(revision 13703)
@@ -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(pst_to_i(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(pst_to_i(st));
+
+    str = rb_sprintf("#<%s: ", rb_class2name(CLASS_OF(st)));
+    pst_message(str, pid, status);
     rb_str_cat2(str, ">");
     return str;
 }

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml

[前][次][番号順一覧][スレッド一覧]