file.c: File.mkfifo
* file.c (rb_file_s_mkfifo): implement File.mkfifo. [Feature #11536] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51897 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
30f9177d5d
commit
9289515562
@ -1,3 +1,8 @@
|
|||||||
|
Fri Sep 18 20:11:11 2015 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||||
|
|
||||||
|
* file.c (rb_file_s_mkfifo): implement File.mkfifo.
|
||||||
|
[Feature #11536]
|
||||||
|
|
||||||
Fri Sep 18 16:56:19 2015 Shugo Maeda <shugo@ruby-lang.org>
|
Fri Sep 18 16:56:19 2015 Shugo Maeda <shugo@ruby-lang.org>
|
||||||
|
|
||||||
* NEWS: add Net::FTP#mlst and Net::FTP#mlsd.
|
* NEWS: add Net::FTP#mlst and Net::FTP#mlsd.
|
||||||
|
4
NEWS
4
NEWS
@ -30,6 +30,10 @@ with all sufficient information, see the ChangeLog file.
|
|||||||
[Feature #11049]
|
[Feature #11049]
|
||||||
* Enumerable#chunk_while [Feature #10769]
|
* Enumerable#chunk_while [Feature #10769]
|
||||||
|
|
||||||
|
* File
|
||||||
|
|
||||||
|
* File.mkfifo [Feature #11536]
|
||||||
|
|
||||||
* Hash
|
* Hash
|
||||||
|
|
||||||
* Hash#fetch_values [Feature #10017]
|
* Hash#fetch_values [Feature #10017]
|
||||||
|
@ -2182,6 +2182,8 @@ AC_CHECK_FUNCS(memalign)
|
|||||||
AC_CHECK_FUNCS(writev)
|
AC_CHECK_FUNCS(writev)
|
||||||
AC_CHECK_FUNCS(memrchr)
|
AC_CHECK_FUNCS(memrchr)
|
||||||
AC_CHECK_FUNCS(memmem)
|
AC_CHECK_FUNCS(memmem)
|
||||||
|
AC_CHECK_FUNCS(mkfifo)
|
||||||
|
AC_CHECK_FUNCS(mknod)
|
||||||
AC_CHECK_FUNCS(mktime)
|
AC_CHECK_FUNCS(mktime)
|
||||||
AC_CHECK_FUNCS(pipe2)
|
AC_CHECK_FUNCS(pipe2)
|
||||||
AC_CHECK_FUNCS(poll)
|
AC_CHECK_FUNCS(poll)
|
||||||
|
39
file.c
39
file.c
@ -5508,6 +5508,44 @@ rb_stat_sticky(VALUE obj)
|
|||||||
return Qfalse;
|
return Qfalse;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if !defined HAVE_MKFIFO && defined HAVE_MKNOD && defined S_IFIFO
|
||||||
|
#define mkfifo(path, mode) mknod(path, (mode)&~S_IFMT|S_IFIFO, 0)
|
||||||
|
#define HAVE_MKFIFO
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* call-seq:
|
||||||
|
* File.mkfifo(file_name, mode) => 0
|
||||||
|
*
|
||||||
|
* Creates a FIFO special file with name _file_name_. _mode_
|
||||||
|
* specifies the FIFO's permissions. It is modified by the process's
|
||||||
|
* umask in the usual way: the permissions of the created file are
|
||||||
|
* (mode & ~umask).
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifdef HAVE_MKFIFO
|
||||||
|
static VALUE
|
||||||
|
rb_file_s_mkfifo(int argc, VALUE *argv)
|
||||||
|
{
|
||||||
|
VALUE path;
|
||||||
|
int mode = 0666;
|
||||||
|
|
||||||
|
rb_check_arity(argc, 1, 2);
|
||||||
|
if (argc > 1) {
|
||||||
|
mode = NUM2INT(argv[1]);
|
||||||
|
}
|
||||||
|
path = argv[0];
|
||||||
|
FilePathValue(path);
|
||||||
|
path = rb_str_encode_ospath(path);
|
||||||
|
if (mkfifo(RSTRING_PTR(path), mode)) {
|
||||||
|
rb_sys_fail_path(path);
|
||||||
|
}
|
||||||
|
return INT2FIX(0);
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
#define rb_file_s_mkfifo rb_f_notimplement
|
||||||
|
#endif
|
||||||
|
|
||||||
VALUE rb_mFConst;
|
VALUE rb_mFConst;
|
||||||
|
|
||||||
void
|
void
|
||||||
@ -5917,6 +5955,7 @@ Init_File(void)
|
|||||||
rb_define_singleton_method(rb_cFile, "rename", rb_file_s_rename, 2);
|
rb_define_singleton_method(rb_cFile, "rename", rb_file_s_rename, 2);
|
||||||
rb_define_singleton_method(rb_cFile, "umask", rb_file_s_umask, -1);
|
rb_define_singleton_method(rb_cFile, "umask", rb_file_s_umask, -1);
|
||||||
rb_define_singleton_method(rb_cFile, "truncate", rb_file_s_truncate, 2);
|
rb_define_singleton_method(rb_cFile, "truncate", rb_file_s_truncate, 2);
|
||||||
|
rb_define_singleton_method(rb_cFile, "mkfifo", rb_file_s_mkfifo, -1);
|
||||||
rb_define_singleton_method(rb_cFile, "expand_path", rb_file_s_expand_path, -1);
|
rb_define_singleton_method(rb_cFile, "expand_path", rb_file_s_expand_path, -1);
|
||||||
rb_define_singleton_method(rb_cFile, "absolute_path", rb_file_s_absolute_path, -1);
|
rb_define_singleton_method(rb_cFile, "absolute_path", rb_file_s_absolute_path, -1);
|
||||||
rb_define_singleton_method(rb_cFile, "realpath", rb_file_s_realpath, -1);
|
rb_define_singleton_method(rb_cFile, "realpath", rb_file_s_realpath, -1);
|
||||||
|
@ -4,10 +4,9 @@ require "timeout"
|
|||||||
require_relative "find_executable"
|
require_relative "find_executable"
|
||||||
|
|
||||||
def File.mkfifo(fn)
|
def File.mkfifo(fn)
|
||||||
raise NotImplementedError, "does not support fifo" if /mswin|mingw|bccwin/ =~ RUBY_PLATFORM
|
|
||||||
ret = system("mkfifo", fn)
|
ret = system("mkfifo", fn)
|
||||||
raise NotImplementedError, "mkfifo fails" if !ret
|
raise NotImplementedError, "mkfifo fails" if !ret
|
||||||
end
|
end unless File.respond_to?(:mkfifo) or /mswin|mingw|bccwin/ =~ RUBY_PLATFORM
|
||||||
|
|
||||||
module EnvUtil
|
module EnvUtil
|
||||||
def rubybin
|
def rubybin
|
||||||
|
Loading…
x
Reference in New Issue
Block a user