From d03315d84a0ac639f80b5c0d499c1c662be66c55 Mon Sep 17 00:00:00 2001 From: akr Date: Thu, 4 Sep 2014 15:54:04 +0000 Subject: * 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 --- ext/-test-/dir/extconf.rb | 9 ---- ext/-test-/dir/fileno.c | 109 ---------------------------------------------- ext/-test-/dir/init.c | 11 ----- 3 files changed, 129 deletions(-) delete mode 100644 ext/-test-/dir/extconf.rb delete mode 100644 ext/-test-/dir/fileno.c delete mode 100644 ext/-test-/dir/init.c (limited to 'ext/-test-') 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 -#elif defined HAVE_DIRECT_H && !defined _WIN32 -# include -#else -# define dirent direct -# if HAVE_SYS_NDIR_H -# include -# endif -# if HAVE_SYS_DIR_H -# include -# endif -# if HAVE_NDIR_H -# include -# 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 dir. - * - * 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); -} -- cgit v1.2.3