summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorshyouhei <shyouhei@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2007-05-22 16:28:47 +0000
committershyouhei <shyouhei@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2007-05-22 16:28:47 +0000
commit0480478e13661246885ffa83375dc623397d27b4 (patch)
tree95505a3272ae2e5b53751e0b17e1f81ebba93de6
parent28f4cbf5b92a875f3dc8b47de885037cab7b7437 (diff)
merge -r 12143:12147
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8_5@12314 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog8
-rw-r--r--error.c2
-rw-r--r--io.c31
-rw-r--r--version.h2
4 files changed, 29 insertions, 14 deletions
diff --git a/ChangeLog b/ChangeLog
index cf1d060c3b..f73e692d3d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+Wed May 23 01:28:14 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * error.c (rb_notimplement), io.c (pipe_open): removed definite
+ articles and UNIX manual section from messages. [ruby-dev:30690]
+
+ * io.c (pipe_open): raise NotImplementedError for command "-" on
+ platforms where fork(2) is not available. [ruby-dev:30681]
+
Wed May 23 00:06:19 2007 NAKAMURA Usaku <usa@ruby-lang.org>
* ext/socket/socket.c (s_recv, s_recvfrom): some systems (such as
diff --git a/error.c b/error.c
index 34af299823..93093e0e0f 100644
--- a/error.c
+++ b/error.c
@@ -1083,7 +1083,7 @@ void
rb_notimplement()
{
rb_raise(rb_eNotImpError,
- "the %s() function is unimplemented on this machine",
+ "%s() function is unimplemented on this machine",
rb_id2name(ruby_frame->last_func));
}
diff --git a/io.c b/io.c
index 9275acaea7..09fd3d0433 100644
--- a/io.c
+++ b/io.c
@@ -3026,11 +3026,29 @@ pipe_open(pstr, pname, mode)
{
int modef = rb_io_mode_flags(mode);
OpenFile *fptr;
-
#if defined(DJGPP) || defined(__human68k__) || defined(__VMS)
FILE *f;
+#else
+ int pid;
+#ifdef _WIN32
+ FILE *fpr, *fpw;
+#else
+ int pr[2], pw[2];
+#endif
+#endif
+ volatile int doexec;
if (!pname) pname = StringValuePtr(pstr);
+ doexec = (strcmp("-", pname) != 0);
+
+#if defined(DJGPP) || defined(__human68k__) || defined(__VMS) || defined(_WIN32)
+ if (!doexec) {
+ rb_raise(rb_eNotImpError,
+ "fork() function is unimplemented on this machine");
+ }
+#endif
+
+#if defined(DJGPP) || defined(__human68k__) || defined(__VMS)
f = popen(pname, mode);
if (!f) rb_sys_fail(pname);
@@ -3052,11 +3070,6 @@ pipe_open(pstr, pname, mode)
}
#else
#ifdef _WIN32
- int pid;
- FILE *fpr, *fpw;
-
- if (!pname) pname = StringValuePtr(pstr);
-
retry:
pid = pipe_exec(pname, rb_io_mode_modenum(mode), &fpr, &fpw);
if (pid == -1) { /* exec failed */
@@ -3086,16 +3099,10 @@ retry:
return (VALUE)port;
}
#else
- int pid, pr[2], pw[2];
- volatile int doexec;
-
- if (!pname) pname = StringValuePtr(pstr);
-
if (((modef & FMODE_READABLE) && pipe(pr) == -1) ||
((modef & FMODE_WRITABLE) && pipe(pw) == -1))
rb_sys_fail(pname);
- doexec = (strcmp("-", pname) != 0);
if (!doexec) {
fflush(stdin); /* is it really needed? */
fflush(stdout);
diff --git a/version.h b/version.h
index ef0c05ac82..e2349f7f52 100644
--- a/version.h
+++ b/version.h
@@ -2,7 +2,7 @@
#define RUBY_RELEASE_DATE "2007-05-23"
#define RUBY_VERSION_CODE 185
#define RUBY_RELEASE_CODE 20070523
-#define RUBY_PATCHLEVEL 40
+#define RUBY_PATCHLEVEL 41
#define RUBY_VERSION_MAJOR 1
#define RUBY_VERSION_MINOR 8