diff options
Diffstat (limited to 'ext/fcntl')
| -rw-r--r-- | ext/fcntl/.cvsignore | 3 | ||||
| -rw-r--r-- | ext/fcntl/MANIFEST | 3 | ||||
| -rw-r--r-- | ext/fcntl/depend | 164 | ||||
| -rw-r--r-- | ext/fcntl/extconf.rb | 3 | ||||
| -rw-r--r-- | ext/fcntl/fcntl.c | 210 | ||||
| -rw-r--r-- | ext/fcntl/fcntl.gemspec | 32 |
6 files changed, 397 insertions, 18 deletions
diff --git a/ext/fcntl/.cvsignore b/ext/fcntl/.cvsignore deleted file mode 100644 index 4088712231..0000000000 --- a/ext/fcntl/.cvsignore +++ /dev/null @@ -1,3 +0,0 @@ -Makefile -mkmf.log -*.def diff --git a/ext/fcntl/MANIFEST b/ext/fcntl/MANIFEST deleted file mode 100644 index aef7ad4ca0..0000000000 --- a/ext/fcntl/MANIFEST +++ /dev/null @@ -1,3 +0,0 @@ -MANIFEST -depend -fcntl.c diff --git a/ext/fcntl/depend b/ext/fcntl/depend index 10eab64a46..57ea0f2106 100644 --- a/ext/fcntl/depend +++ b/ext/fcntl/depend @@ -1 +1,163 @@ -fcntl.o: fcntl.c $(hdrdir)/ruby.h $(topdir)/config.h $(hdrdir)/defines.h +# AUTOGENERATED DEPENDENCIES START +fcntl.o: $(RUBY_EXTCONF_H) +fcntl.o: $(arch_hdrdir)/ruby/config.h +fcntl.o: $(hdrdir)/ruby.h +fcntl.o: $(hdrdir)/ruby/assert.h +fcntl.o: $(hdrdir)/ruby/backward.h +fcntl.o: $(hdrdir)/ruby/backward/2/assume.h +fcntl.o: $(hdrdir)/ruby/backward/2/attributes.h +fcntl.o: $(hdrdir)/ruby/backward/2/bool.h +fcntl.o: $(hdrdir)/ruby/backward/2/inttypes.h +fcntl.o: $(hdrdir)/ruby/backward/2/limits.h +fcntl.o: $(hdrdir)/ruby/backward/2/long_long.h +fcntl.o: $(hdrdir)/ruby/backward/2/stdalign.h +fcntl.o: $(hdrdir)/ruby/backward/2/stdarg.h +fcntl.o: $(hdrdir)/ruby/defines.h +fcntl.o: $(hdrdir)/ruby/intern.h +fcntl.o: $(hdrdir)/ruby/internal/abi.h +fcntl.o: $(hdrdir)/ruby/internal/anyargs.h +fcntl.o: $(hdrdir)/ruby/internal/arithmetic.h +fcntl.o: $(hdrdir)/ruby/internal/arithmetic/char.h +fcntl.o: $(hdrdir)/ruby/internal/arithmetic/double.h +fcntl.o: $(hdrdir)/ruby/internal/arithmetic/fixnum.h +fcntl.o: $(hdrdir)/ruby/internal/arithmetic/gid_t.h +fcntl.o: $(hdrdir)/ruby/internal/arithmetic/int.h +fcntl.o: $(hdrdir)/ruby/internal/arithmetic/intptr_t.h +fcntl.o: $(hdrdir)/ruby/internal/arithmetic/long.h +fcntl.o: $(hdrdir)/ruby/internal/arithmetic/long_long.h +fcntl.o: $(hdrdir)/ruby/internal/arithmetic/mode_t.h +fcntl.o: $(hdrdir)/ruby/internal/arithmetic/off_t.h +fcntl.o: $(hdrdir)/ruby/internal/arithmetic/pid_t.h +fcntl.o: $(hdrdir)/ruby/internal/arithmetic/short.h +fcntl.o: $(hdrdir)/ruby/internal/arithmetic/size_t.h +fcntl.o: $(hdrdir)/ruby/internal/arithmetic/st_data_t.h +fcntl.o: $(hdrdir)/ruby/internal/arithmetic/uid_t.h +fcntl.o: $(hdrdir)/ruby/internal/assume.h +fcntl.o: $(hdrdir)/ruby/internal/attr/alloc_size.h +fcntl.o: $(hdrdir)/ruby/internal/attr/artificial.h +fcntl.o: $(hdrdir)/ruby/internal/attr/cold.h +fcntl.o: $(hdrdir)/ruby/internal/attr/const.h +fcntl.o: $(hdrdir)/ruby/internal/attr/constexpr.h +fcntl.o: $(hdrdir)/ruby/internal/attr/deprecated.h +fcntl.o: $(hdrdir)/ruby/internal/attr/diagnose_if.h +fcntl.o: $(hdrdir)/ruby/internal/attr/enum_extensibility.h +fcntl.o: $(hdrdir)/ruby/internal/attr/error.h +fcntl.o: $(hdrdir)/ruby/internal/attr/flag_enum.h +fcntl.o: $(hdrdir)/ruby/internal/attr/forceinline.h +fcntl.o: $(hdrdir)/ruby/internal/attr/format.h +fcntl.o: $(hdrdir)/ruby/internal/attr/maybe_unused.h +fcntl.o: $(hdrdir)/ruby/internal/attr/noalias.h +fcntl.o: $(hdrdir)/ruby/internal/attr/nodiscard.h +fcntl.o: $(hdrdir)/ruby/internal/attr/noexcept.h +fcntl.o: $(hdrdir)/ruby/internal/attr/noinline.h +fcntl.o: $(hdrdir)/ruby/internal/attr/nonnull.h +fcntl.o: $(hdrdir)/ruby/internal/attr/noreturn.h +fcntl.o: $(hdrdir)/ruby/internal/attr/packed_struct.h +fcntl.o: $(hdrdir)/ruby/internal/attr/pure.h +fcntl.o: $(hdrdir)/ruby/internal/attr/restrict.h +fcntl.o: $(hdrdir)/ruby/internal/attr/returns_nonnull.h +fcntl.o: $(hdrdir)/ruby/internal/attr/warning.h +fcntl.o: $(hdrdir)/ruby/internal/attr/weakref.h +fcntl.o: $(hdrdir)/ruby/internal/cast.h +fcntl.o: $(hdrdir)/ruby/internal/compiler_is.h +fcntl.o: $(hdrdir)/ruby/internal/compiler_is/apple.h +fcntl.o: $(hdrdir)/ruby/internal/compiler_is/clang.h +fcntl.o: $(hdrdir)/ruby/internal/compiler_is/gcc.h +fcntl.o: $(hdrdir)/ruby/internal/compiler_is/intel.h +fcntl.o: $(hdrdir)/ruby/internal/compiler_is/msvc.h +fcntl.o: $(hdrdir)/ruby/internal/compiler_is/sunpro.h +fcntl.o: $(hdrdir)/ruby/internal/compiler_since.h +fcntl.o: $(hdrdir)/ruby/internal/config.h +fcntl.o: $(hdrdir)/ruby/internal/constant_p.h +fcntl.o: $(hdrdir)/ruby/internal/core.h +fcntl.o: $(hdrdir)/ruby/internal/core/rarray.h +fcntl.o: $(hdrdir)/ruby/internal/core/rbasic.h +fcntl.o: $(hdrdir)/ruby/internal/core/rbignum.h +fcntl.o: $(hdrdir)/ruby/internal/core/rclass.h +fcntl.o: $(hdrdir)/ruby/internal/core/rdata.h +fcntl.o: $(hdrdir)/ruby/internal/core/rfile.h +fcntl.o: $(hdrdir)/ruby/internal/core/rhash.h +fcntl.o: $(hdrdir)/ruby/internal/core/robject.h +fcntl.o: $(hdrdir)/ruby/internal/core/rregexp.h +fcntl.o: $(hdrdir)/ruby/internal/core/rstring.h +fcntl.o: $(hdrdir)/ruby/internal/core/rstruct.h +fcntl.o: $(hdrdir)/ruby/internal/core/rtypeddata.h +fcntl.o: $(hdrdir)/ruby/internal/ctype.h +fcntl.o: $(hdrdir)/ruby/internal/dllexport.h +fcntl.o: $(hdrdir)/ruby/internal/dosish.h +fcntl.o: $(hdrdir)/ruby/internal/error.h +fcntl.o: $(hdrdir)/ruby/internal/eval.h +fcntl.o: $(hdrdir)/ruby/internal/event.h +fcntl.o: $(hdrdir)/ruby/internal/fl_type.h +fcntl.o: $(hdrdir)/ruby/internal/gc.h +fcntl.o: $(hdrdir)/ruby/internal/glob.h +fcntl.o: $(hdrdir)/ruby/internal/globals.h +fcntl.o: $(hdrdir)/ruby/internal/has/attribute.h +fcntl.o: $(hdrdir)/ruby/internal/has/builtin.h +fcntl.o: $(hdrdir)/ruby/internal/has/c_attribute.h +fcntl.o: $(hdrdir)/ruby/internal/has/cpp_attribute.h +fcntl.o: $(hdrdir)/ruby/internal/has/declspec_attribute.h +fcntl.o: $(hdrdir)/ruby/internal/has/extension.h +fcntl.o: $(hdrdir)/ruby/internal/has/feature.h +fcntl.o: $(hdrdir)/ruby/internal/has/warning.h +fcntl.o: $(hdrdir)/ruby/internal/intern/array.h +fcntl.o: $(hdrdir)/ruby/internal/intern/bignum.h +fcntl.o: $(hdrdir)/ruby/internal/intern/class.h +fcntl.o: $(hdrdir)/ruby/internal/intern/compar.h +fcntl.o: $(hdrdir)/ruby/internal/intern/complex.h +fcntl.o: $(hdrdir)/ruby/internal/intern/cont.h +fcntl.o: $(hdrdir)/ruby/internal/intern/dir.h +fcntl.o: $(hdrdir)/ruby/internal/intern/enum.h +fcntl.o: $(hdrdir)/ruby/internal/intern/enumerator.h +fcntl.o: $(hdrdir)/ruby/internal/intern/error.h +fcntl.o: $(hdrdir)/ruby/internal/intern/eval.h +fcntl.o: $(hdrdir)/ruby/internal/intern/file.h +fcntl.o: $(hdrdir)/ruby/internal/intern/hash.h +fcntl.o: $(hdrdir)/ruby/internal/intern/io.h +fcntl.o: $(hdrdir)/ruby/internal/intern/load.h +fcntl.o: $(hdrdir)/ruby/internal/intern/marshal.h +fcntl.o: $(hdrdir)/ruby/internal/intern/numeric.h +fcntl.o: $(hdrdir)/ruby/internal/intern/object.h +fcntl.o: $(hdrdir)/ruby/internal/intern/parse.h +fcntl.o: $(hdrdir)/ruby/internal/intern/proc.h +fcntl.o: $(hdrdir)/ruby/internal/intern/process.h +fcntl.o: $(hdrdir)/ruby/internal/intern/random.h +fcntl.o: $(hdrdir)/ruby/internal/intern/range.h +fcntl.o: $(hdrdir)/ruby/internal/intern/rational.h +fcntl.o: $(hdrdir)/ruby/internal/intern/re.h +fcntl.o: $(hdrdir)/ruby/internal/intern/ruby.h +fcntl.o: $(hdrdir)/ruby/internal/intern/select.h +fcntl.o: $(hdrdir)/ruby/internal/intern/select/largesize.h +fcntl.o: $(hdrdir)/ruby/internal/intern/set.h +fcntl.o: $(hdrdir)/ruby/internal/intern/signal.h +fcntl.o: $(hdrdir)/ruby/internal/intern/sprintf.h +fcntl.o: $(hdrdir)/ruby/internal/intern/string.h +fcntl.o: $(hdrdir)/ruby/internal/intern/struct.h +fcntl.o: $(hdrdir)/ruby/internal/intern/thread.h +fcntl.o: $(hdrdir)/ruby/internal/intern/time.h +fcntl.o: $(hdrdir)/ruby/internal/intern/variable.h +fcntl.o: $(hdrdir)/ruby/internal/intern/vm.h +fcntl.o: $(hdrdir)/ruby/internal/interpreter.h +fcntl.o: $(hdrdir)/ruby/internal/iterator.h +fcntl.o: $(hdrdir)/ruby/internal/memory.h +fcntl.o: $(hdrdir)/ruby/internal/method.h +fcntl.o: $(hdrdir)/ruby/internal/module.h +fcntl.o: $(hdrdir)/ruby/internal/newobj.h +fcntl.o: $(hdrdir)/ruby/internal/scan_args.h +fcntl.o: $(hdrdir)/ruby/internal/special_consts.h +fcntl.o: $(hdrdir)/ruby/internal/static_assert.h +fcntl.o: $(hdrdir)/ruby/internal/stdalign.h +fcntl.o: $(hdrdir)/ruby/internal/stdbool.h +fcntl.o: $(hdrdir)/ruby/internal/stdckdint.h +fcntl.o: $(hdrdir)/ruby/internal/symbol.h +fcntl.o: $(hdrdir)/ruby/internal/value.h +fcntl.o: $(hdrdir)/ruby/internal/value_type.h +fcntl.o: $(hdrdir)/ruby/internal/variable.h +fcntl.o: $(hdrdir)/ruby/internal/warning_push.h +fcntl.o: $(hdrdir)/ruby/internal/xmalloc.h +fcntl.o: $(hdrdir)/ruby/missing.h +fcntl.o: $(hdrdir)/ruby/ruby.h +fcntl.o: $(hdrdir)/ruby/st.h +fcntl.o: $(hdrdir)/ruby/subst.h +fcntl.o: fcntl.c +# AUTOGENERATED DEPENDENCIES END diff --git a/ext/fcntl/extconf.rb b/ext/fcntl/extconf.rb new file mode 100644 index 0000000000..6998f77483 --- /dev/null +++ b/ext/fcntl/extconf.rb @@ -0,0 +1,3 @@ +# frozen_string_literal: true +require 'mkmf' +create_makefile('fcntl') diff --git a/ext/fcntl/fcntl.c b/ext/fcntl/fcntl.c index d48630fc66..b987e237dd 100644 --- a/ext/fcntl/fcntl.c +++ b/ext/fcntl/fcntl.c @@ -14,15 +14,9 @@ fcntl - load the C fcntl.h defines -= SYNOPSIS - - require "fcntl" - m = s.fcntl(Fcntl::F_GETFL, 0) - f.fcntl(Fcntl::F_SETFL, Fcntl::O_NONBLOCK|m) - = DESCRIPTION -This module is just a translation of the C <fnctl.h> file. +This module is just a translation of the C <fcntl.h> file. = NOTE @@ -34,79 +28,273 @@ pack up your own arguments to pass as args for locking functions, etc. #include "ruby.h" #include <fcntl.h> +/* + * Document-module: Fcntl + * + * Fcntl loads the constants defined in the system's <fcntl.h> C header + * file, and used with both the fcntl(2) and open(2) POSIX system calls. + * + * To perform a fcntl(2) operation, use IO::fcntl. + * + * To perform an open(2) operation, use IO::sysopen. + * + * The set of operations and constants available depends upon specific + * operating system. Some values listed below may not be supported on your + * system. + * + * See your fcntl(2) man page for complete details. + * + * Open /tmp/tempfile as a write-only file that is created if it doesn't + * exist: + * + * require 'fcntl' + * + * fd = IO.sysopen('/tmp/tempfile', + * Fcntl::O_WRONLY | Fcntl::O_EXCL | Fcntl::O_CREAT) + * f = IO.open(fd) + * f.syswrite("TEMP DATA") + * f.close + * + * Get the flags on file +s+: + * + * m = s.fcntl(Fcntl::F_GETFL, 0) + * + * Set the non-blocking flag on +f+ in addition to the existing flags in +m+. + * + * f.fcntl(Fcntl::F_SETFL, Fcntl::O_NONBLOCK|m) + * + */ + +#define FCNTL_VERSION "1.3.0" + void -Init_fcntl() +Init_fcntl(void) { VALUE mFcntl = rb_define_module("Fcntl"); + + /* The version string. */ + rb_define_const(mFcntl, "VERSION", rb_str_new_cstr(FCNTL_VERSION)); + #ifdef F_DUPFD + /* + * Duplicate a file descriptor to the minimum unused file descriptor + * greater than or equal to the argument. + * + * The close-on-exec flag of the duplicated file descriptor is set. + * (Ruby uses F_DUPFD_CLOEXEC internally if available to avoid race + * condition. F_SETFD is used if F_DUPFD_CLOEXEC is not available.) + */ rb_define_const(mFcntl, "F_DUPFD", INT2NUM(F_DUPFD)); #endif #ifdef F_GETFD + /* + * Read the close-on-exec flag of a file descriptor. + */ rb_define_const(mFcntl, "F_GETFD", INT2NUM(F_GETFD)); #endif #ifdef F_GETLK + /* + * Determine whether a given region of a file is locked. This uses one of + * the F_*LK flags. + */ rb_define_const(mFcntl, "F_GETLK", INT2NUM(F_GETLK)); #endif #ifdef F_SETFD + /* + * Set the close-on-exec flag of a file descriptor. + */ rb_define_const(mFcntl, "F_SETFD", INT2NUM(F_SETFD)); #endif #ifdef F_GETFL + /* + * Get the file descriptor flags. This will be one or more of the O_* + * flags. + */ rb_define_const(mFcntl, "F_GETFL", INT2NUM(F_GETFL)); #endif #ifdef F_SETFL + /* + * Set the file descriptor flags. This will be one or more of the O_* + * flags. + */ rb_define_const(mFcntl, "F_SETFL", INT2NUM(F_SETFL)); #endif #ifdef F_SETLK + /* + * Acquire a lock on a region of a file. This uses one of the F_*LCK + * flags. + */ rb_define_const(mFcntl, "F_SETLK", INT2NUM(F_SETLK)); #endif #ifdef F_SETLKW + /* + * Acquire a lock on a region of a file, waiting if necessary. This uses + * one of the F_*LCK flags + */ rb_define_const(mFcntl, "F_SETLKW", INT2NUM(F_SETLKW)); #endif #ifdef FD_CLOEXEC + /* + * the value of the close-on-exec flag. + */ rb_define_const(mFcntl, "FD_CLOEXEC", INT2NUM(FD_CLOEXEC)); #endif #ifdef F_RDLCK + /* + * Read lock for a region of a file + */ rb_define_const(mFcntl, "F_RDLCK", INT2NUM(F_RDLCK)); #endif #ifdef F_UNLCK + /* + * Remove lock for a region of a file + */ rb_define_const(mFcntl, "F_UNLCK", INT2NUM(F_UNLCK)); #endif #ifdef F_WRLCK + /* + * Write lock for a region of a file + */ rb_define_const(mFcntl, "F_WRLCK", INT2NUM(F_WRLCK)); #endif +#ifdef F_SETPIPE_SZ + /* + * Change the capacity of the pipe referred to by fd to be at least arg bytes. + */ + rb_define_const(mFcntl, "F_SETPIPE_SZ", INT2NUM(F_SETPIPE_SZ)); +#endif +#ifdef F_GETPIPE_SZ + /* + * Return (as the function result) the capacity of the pipe referred to by fd. + */ + rb_define_const(mFcntl, "F_GETPIPE_SZ", INT2NUM(F_GETPIPE_SZ)); +#endif #ifdef O_CREAT + /* + * Create the file if it doesn't exist + */ rb_define_const(mFcntl, "O_CREAT", INT2NUM(O_CREAT)); #endif #ifdef O_EXCL + /* + * Used with O_CREAT, fail if the file exists + */ rb_define_const(mFcntl, "O_EXCL", INT2NUM(O_EXCL)); #endif #ifdef O_NOCTTY + /* + * Open TTY without it becoming the controlling TTY + */ rb_define_const(mFcntl, "O_NOCTTY", INT2NUM(O_NOCTTY)); #endif #ifdef O_TRUNC + /* + * Truncate the file on open + */ rb_define_const(mFcntl, "O_TRUNC", INT2NUM(O_TRUNC)); #endif #ifdef O_APPEND + /* + * Open the file in append mode + */ rb_define_const(mFcntl, "O_APPEND", INT2NUM(O_APPEND)); #endif #ifdef O_NONBLOCK + /* + * Open the file in non-blocking mode + */ rb_define_const(mFcntl, "O_NONBLOCK", INT2NUM(O_NONBLOCK)); #endif #ifdef O_NDELAY + /* + * Open the file in non-blocking mode + */ rb_define_const(mFcntl, "O_NDELAY", INT2NUM(O_NDELAY)); #endif #ifdef O_RDONLY + /* + * Open the file in read-only mode + */ rb_define_const(mFcntl, "O_RDONLY", INT2NUM(O_RDONLY)); #endif #ifdef O_RDWR + /* + * Open the file in read-write mode + */ rb_define_const(mFcntl, "O_RDWR", INT2NUM(O_RDWR)); #endif #ifdef O_WRONLY + /* + * Open the file in write-only mode. + */ rb_define_const(mFcntl, "O_WRONLY", INT2NUM(O_WRONLY)); #endif -#ifdef O_ACCMODE +#ifndef O_ACCMODE + int O_ACCMODE = (O_RDONLY | O_WRONLY | O_RDWR); +#endif + /* + * Mask to extract the read/write flags + */ rb_define_const(mFcntl, "O_ACCMODE", INT2FIX(O_ACCMODE)); -#else - rb_define_const(mFcntl, "O_ACCMODE", INT2FIX(O_RDONLY | O_WRONLY | O_RDWR)); +#ifdef F_DUP2FD + /* + * It is a FreeBSD specific constant and equivalent + * to dup2 call. + */ + rb_define_const(mFcntl, "F_DUP2FD", INT2NUM(F_DUP2FD)); +#endif +#ifdef F_DUP2FD_CLOEXEC + /* + * It is a FreeBSD specific constant and acts + * similarly as F_DUP2FD but set the FD_CLOEXEC + * flag in addition. + */ + rb_define_const(mFcntl, "F_DUP2FD_CLOEXEC", INT2NUM(F_DUP2FD_CLOEXEC)); +#endif + +#ifdef F_PREALLOCATE + /* + * macOS specific flag used for preallocating file space. + */ + rb_define_const(mFcntl, "F_PREALLOCATE", INT2NUM(F_PREALLOCATE)); +#endif + +#ifdef F_ALLOCATECONTIG + /* + * macOS specific flag used with F_PREALLOCATE for allocating contiguous + * space. + */ + rb_define_const(mFcntl, "F_ALLOCATECONTIG", INT2NUM(F_ALLOCATECONTIG)); +#endif + +#ifdef F_ALLOCATEALL + /* + * macOS specific flag used with F_PREALLOCATE for allocating all contiguous + * space or no space. + */ + rb_define_const(mFcntl, "F_ALLOCATEALL", INT2NUM(F_ALLOCATEALL)); +#endif + +#ifdef F_ALLOCATEPERSIST + /* + * macOS specific flag used with F_PREALLOCATE. Allocate space that is not + * freed when close is called. + */ + rb_define_const(mFcntl, "F_ALLOCATEPERSIST", INT2NUM(F_ALLOCATEPERSIST)); +#endif + +#ifdef F_PEOFPOSMODE + /* + * macOS specific flag used with F_PREALLOCATE. Allocate from the physical + * end of file + */ + rb_define_const(mFcntl, "F_PEOFPOSMODE", INT2NUM(F_PEOFPOSMODE)); +#endif + +#ifdef F_VOLPOSMODE + /* + * macOS specific flag used with F_PREALLOCATE. Allocate from the volume offset. + */ + rb_define_const(mFcntl, "F_VOLPOSMODE", INT2NUM(F_VOLPOSMODE)); #endif } diff --git a/ext/fcntl/fcntl.gemspec b/ext/fcntl/fcntl.gemspec new file mode 100644 index 0000000000..613a90d1ae --- /dev/null +++ b/ext/fcntl/fcntl.gemspec @@ -0,0 +1,32 @@ +# coding: utf-8 +# frozen_string_literal: true + +source_version = ["", "ext/fcntl/"].find do |dir| + begin + break File.open(File.join(__dir__, "#{dir}fcntl.c")) {|f| + f.gets("\n#define FCNTL_VERSION ") + f.gets[/\s*"(.+)"/, 1] + } + rescue Errno::ENOENT + end +end + +Gem::Specification.new do |spec| + spec.name = "fcntl" + spec.version = source_version + spec.authors = ["Yukihiro Matsumoto"] + spec.email = ["matz@ruby-lang.org"] + + spec.summary = "Loads constants defined in the OS fcntl.h C header file" + spec.description = "Loads constants defined in the OS fcntl.h C header file" + spec.homepage = "https://github.com/ruby/fcntl" + spec.licenses = ["Ruby", "BSD-2-Clause"] + + spec.files = ["ext/fcntl/extconf.rb", "ext/fcntl/fcntl.c"] + spec.extra_rdoc_files = [".document", ".rdoc_options", "BSDL", "COPYING", "README.md"] + spec.bindir = "exe" + spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) } + spec.require_paths = ["lib"] + spec.extensions = "ext/fcntl/extconf.rb" + spec.required_ruby_version = ">= 2.5.0" +end |
