diff options
author | akr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2014-09-04 15:54:04 +0000 |
---|---|---|
committer | akr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2014-09-04 15:54:04 +0000 |
commit | d03315d84a0ac639f80b5c0d499c1c662be66c55 (patch) | |
tree | 8ec01d9e0742cbf5c2fc871d327eba12dd8c36b0 /ext | |
parent | f20d51b0adb640c9351b3025e6dda7843c3342aa (diff) | |
download | ruby-d03315d84a0ac639f80b5c0d499c1c662be66c55.tar.gz |
* configure.in (dirfd): Check function.
* dir.c (dir_fileno): New method.
[ruby-dev:48265] [Feature #9880]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47387 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ext')
-rw-r--r-- | ext/-test-/dir/extconf.rb | 9 | ||||
-rw-r--r-- | ext/-test-/dir/fileno.c | 109 | ||||
-rw-r--r-- | ext/-test-/dir/init.c | 11 |
3 files changed, 0 insertions, 129 deletions
diff --git a/ext/-test-/dir/extconf.rb b/ext/-test-/dir/extconf.rb deleted file mode 100644 index ce4aad142a..0000000000 --- a/ext/-test-/dir/extconf.rb +++ /dev/null @@ -1,9 +0,0 @@ -have_func("dirfd") - -$INCFLAGS << " -I$(topdir) -I$(top_srcdir)" -$srcs = Dir[File.join($srcdir, "*.{#{SRC_EXT.join(%q{,})}}")] -inits = $srcs.map {|s| File.basename(s, ".*")} -inits.delete("init") -inits.map! {|s|"X(#{s})"} -$defs << "-DTEST_INIT_FUNCS(X)=\"#{inits.join(' ')}\"" -create_makefile("-test-/dir") diff --git a/ext/-test-/dir/fileno.c b/ext/-test-/dir/fileno.c deleted file mode 100644 index 4872942973..0000000000 --- a/ext/-test-/dir/fileno.c +++ /dev/null @@ -1,109 +0,0 @@ -#include "ruby.h" -#include "ruby/encoding.h" -#include "internal.h" - -#if defined HAVE_DIRENT_H && !defined _WIN32 -# include <dirent.h> -#elif defined HAVE_DIRECT_H && !defined _WIN32 -# include <direct.h> -#else -# define dirent direct -# if HAVE_SYS_NDIR_H -# include <sys/ndir.h> -# endif -# if HAVE_SYS_DIR_H -# include <sys/dir.h> -# endif -# if HAVE_NDIR_H -# include <ndir.h> -# endif -# ifdef _WIN32 -# include "win32/dir.h" -# endif -#endif -#if defined(__native_client__) && defined(NACL_NEWLIB) -# include "nacl/dirent.h" -# include "nacl/stat.h" -#endif - -struct dir_data { - DIR *dir; - VALUE path; - rb_encoding *enc; -}; - -#ifdef HAVE_DIRFD -static void * -rb_check_typeddata0(VALUE obj /*, const rb_data_type_t *data_type */) -{ - const char *etype; - /* static const char mesg[] = "wrong argument type %s (expected %s)"; */ - - if (!RB_TYPE_P(obj, T_DATA)) { - etype = rb_builtin_class_name(obj); - /* rb_raise(rb_eTypeError, mesg, etype, data_type->wrap_struct_name); */ - rb_raise(rb_eTypeError, "wrong argument type %s", etype); - } -/* - if (!RTYPEDDATA_P(obj)) { - etype = rb_obj_classname(obj); - rb_raise(rb_eTypeError, mesg, etype, data_type->wrap_struct_name); - } - else if (!rb_typeddata_inherited_p(RTYPEDDATA_TYPE(obj), data_type)) { - etype = RTYPEDDATA_TYPE(obj)->wrap_struct_name; - rb_raise(rb_eTypeError, mesg, etype, data_type->wrap_struct_name); - } -*/ - return DATA_PTR(obj); -} - -static void -dir_closed(void) -{ - rb_raise(rb_eIOError, "closed directory"); -} - -static struct dir_data * -dir_check(VALUE dir) -{ - struct dir_data *dirp; - rb_check_frozen(dir); - dirp = rb_check_typeddata0(dir /*, &dir_data_type*/); - if (!dirp->dir) dir_closed(); - return dirp; -} -#endif - -#define GetDIR(obj, dirp) ((dirp) = dir_check(obj)) - -#ifdef HAVE_DIRFD -/* - * call-seq: - * dir.fileno -> integer - * - * Returns the file descriptor used in <em>dir</em>. - * - * d = Dir.new("..") - * d.fileno #=> 8 - */ -static VALUE -dir_fileno(VALUE dir) -{ - struct dir_data *dirp; - int fd; - - GetDIR(dir, dirp); - fd = dirfd(dirp->dir); - if (fd == -1) - rb_sys_fail("dirfd"); - return INT2NUM(fd); -} -#else -#define dir_fileno rb_f_notimplement -#endif - -void -Init_fileno(VALUE klass) -{ - rb_define_method(rb_cDir,"fileno", dir_fileno, 0); -} diff --git a/ext/-test-/dir/init.c b/ext/-test-/dir/init.c deleted file mode 100644 index 2ca1508468..0000000000 --- a/ext/-test-/dir/init.c +++ /dev/null @@ -1,11 +0,0 @@ -#include "ruby.h" - -#define init(n) {void Init_##n(VALUE klass); Init_##n(klass);} - -void -Init_dir(void) -{ - VALUE mBug = rb_define_module("Bug"); - VALUE klass = rb_define_class_under(mBug, "Dir", rb_cObject); - TEST_INIT_FUNCS(init); -} |