summaryrefslogtreecommitdiff
path: root/process.c
diff options
context:
space:
mode:
authormatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2007-11-20 18:21:39 +0000
committermatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2007-11-20 18:21:39 +0000
commitd154b1c346448b432245d19147502bbffb796cb5 (patch)
tree6d2260c3c4503514ced4afdbcf9548b98a8c1950 /process.c
parent7da723cfbb81a7e40228db33b65fbf4eecd574ad (diff)
* process.c (rb_f_system): returns nil on execution failure.
[ruby-core:13715] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@13990 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'process.c')
-rw-r--r--process.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/process.c b/process.c
index 1518b21373..13f4bef765 100644
--- a/process.c
+++ b/process.c
@@ -1758,10 +1758,11 @@ rb_spawn(int argc, VALUE *argv)
* call-seq:
* system(cmd [, arg, ...]) => true or false
*
- * Executes _cmd_ in a subshell, returning +true+ if the command ran
- * successfully, +false+ otherwise. An error status is available in
+ * Executes _cmd_ in a subshell, returning +true+ if the command
+ * gives zero exit status, +false+ for non zero exit status. Returns
+ * +nil+ if command execution fails. An error status is available in
* <code>$?</code>. The arguments are processed in the same way as
- * for <code>Kernel::exec</code>, and raises same exceptions as it.
+ * for <code>Kernel::exec</code>.
*
* system("echo *")
* system("echo", "*")
@@ -1795,7 +1796,7 @@ rb_f_system(int argc, VALUE *argv)
signal(SIGCHLD, chfunc);
#endif
if (status < 0) {
- rb_sys_fail(RSTRING_PTR(argv[0]));
+ return Qnil;
}
status = NUM2INT(rb_last_status_get());
if (status == EXIT_SUCCESS) return Qtrue;