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

ruby-changes:15285

From: nobu <ko1@a...>
Date: Fri, 2 Apr 2010 08:25:32 +0900 (JST)
Subject: [ruby-changes:15285] Ruby:r27170 (trunk): * process.c (ruby_setsid): split from proc_setsid.

nobu	2010-04-02 08:25:10 +0900 (Fri, 02 Apr 2010)

  New Revision: 27170

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=27170

  Log:
    * process.c (ruby_setsid): split from proc_setsid.

  Modified files:
    trunk/ChangeLog
    trunk/process.c

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 27169)
+++ ChangeLog	(revision 27170)
@@ -1,5 +1,7 @@
-Fri Apr  2 08:22:51 2010  Nobuyoshi Nakada  <nobu@r...>
+Fri Apr  2 08:24:56 2010  Nobuyoshi Nakada  <nobu@r...>
 
+	* process.c (ruby_setsid): split from proc_setsid.
+
 	* process.c (proc_daemon): use EXIT_SUCCESS instead of magic number.
 
 Fri Apr  2 07:00:28 2010  Nobuyoshi Nakada  <nobu@r...>
Index: process.c
===================================================================
--- process.c	(revision 27169)
+++ process.c	(revision 27170)
@@ -3389,6 +3389,10 @@
 
 
 #if defined(HAVE_SETSID) || (defined(HAVE_SETPGRP) && defined(TIOCNOTTY))
+#if !defined(HAVE_SETSID)
+static rb_pid_t ruby_setsid(void);
+#define setsid() ruby_setsid()
+#endif
 /*
  *  call-seq:
  *     Process.setsid   => fixnum
@@ -3403,18 +3407,22 @@
 static VALUE
 proc_setsid(void)
 {
-#if defined(HAVE_SETSID)
     rb_pid_t pid;
 
     rb_secure(2);
     pid = setsid();
     if (pid < 0) rb_sys_fail(0);
     return PIDT2NUM(pid);
-#elif defined(HAVE_SETPGRP) && defined(TIOCNOTTY)
+}
+
+#if !defined(HAVE_SETSID)
+#define HAVE_SETSID 1
+static rb_pid_t
+ruby_setsid(void)
+{
     rb_pid_t pid;
     int ret;
 
-    rb_secure(2);
     pid = getpid();
 #if defined(SETPGRP_VOID)
     ret = setpgrp();
@@ -3424,15 +3432,15 @@
 #else
     ret = setpgrp(0, pid);
 #endif
-    if (ret == -1) rb_sys_fail(0);
+    if (ret == -1) return -1;
 
     if ((fd = open("/dev/tty", O_RDWR)) >= 0) {
 	ioctl(fd, TIOCNOTTY, NULL);
 	close(fd);
     }
-    return PIDT2NUM(pid);
+    return pid;
+}
 #endif
-}
 #else
 #define proc_setsid rb_f_notimplement
 #endif
@@ -4531,7 +4539,7 @@
     return INT2FIX(maxgroups);
 }
 
-#if defined(HAVE_DAEMON) || defined(HAVE_FORK)
+#if defined(HAVE_DAEMON) || (defined(HAVE_FORK) && defined(HAVE_SETSID))
 /*
  *  call-seq:
  *     Process.daemon()                        => 0

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

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