ruby/internal
Samuel Williams 18e55fc1e1
Hide most of the implementation of struct rb_io. (#6511)
* Add rb_io_path and rb_io_open_descriptor.

* Use rb_io_open_descriptor to create PTY objects

* Rename FMODE_PREP -> FMODE_EXTERNAL and expose it

FMODE_PREP I believe refers to the concept of a "pre-prepared" file, but
FMODE_EXTERNAL is clearer about what the file descriptor represents and
aligns with language in the IO::Buffer module.

* Ensure that rb_io_open_descriptor closes the FD if it fails

If FMODE_EXTERNAL is not set, then it's guaranteed that Ruby will be
responsible for closing your file, eventually, if you pass it to
rb_io_open_descriptor, even if it raises an exception.

* Rename IS_EXTERNAL_FD -> RUBY_IO_EXTERNAL_P

* Expose `rb_io_closed_p`.

* Add `rb_io_mode` to get IO mode.

---------

Co-authored-by: KJ Tsanaktsidis <ktsanaktsidis@zendesk.com>
2023-05-30 10:02:40 +09:00
..
array.h Emit special instruction for array literal + .(hash|min|max) 2023-04-18 17:16:22 -07:00
basic_operators.h Emit special instruction for array literal + .(hash|min|max) 2023-04-18 17:16:22 -07:00
bignum.h Stop exporting symbols for MJIT 2023-03-06 21:59:23 -08:00
bits.h Remove obsoleted MJIT_HEADER macro 2023-03-06 22:29:35 -08:00
class.h Make classes embedded on 32 bit 2023-04-16 11:06:31 -04:00
cmdlineopt.h RJIT: Prefix rjit_options with rb_ 2023-03-18 21:28:55 -07:00
compar.h Introduce BOP_CMP for optimized comparison 2022-12-06 12:37:23 -08:00
compile.h Stop exporting symbols for MJIT 2023-03-06 21:59:23 -08:00
compilers.h internal/*.h: skip doxygen 2021-09-10 20:00:06 +09:00
complex.h internal/*.h: skip doxygen 2021-09-10 20:00:06 +09:00
cont.h Introduce Fiber#storage for inheritable fiber-scoped variables. (#6612) 2022-12-01 23:00:33 +13:00
dir.h internal/*.h: skip doxygen 2021-09-10 20:00:06 +09:00
enc.h internal/*.h: skip doxygen 2021-09-10 20:00:06 +09:00
encoding.h parenthesize to macro 2022-12-02 01:31:27 +09:00
enum.h internal/*.h: skip doxygen 2021-09-10 20:00:06 +09:00
enumerator.h internal/*.h: skip doxygen 2021-09-10 20:00:06 +09:00
error.h Add rb_sys_fail_sprintf macro 2023-05-12 18:36:02 +09:00
eval.h internal/*.h: skip doxygen 2021-09-10 20:00:06 +09:00
file.h Revert "reuse open(2) from rb_file_load_ok on POSIX-like system" 2023-02-27 09:24:45 -08:00
fixnum.h Fix rb_fix_mul_fix on OpenBSD/mips64 2022-07-03 09:42:44 -07:00
gc.h Make classes embedded on 32 bit 2023-04-16 11:06:31 -04:00
hash.h Fix crash when replacing ST hash with AR hash 2023-05-23 15:27:56 -04:00
imemo.h use correct svar even if env is escaped 2023-02-10 17:55:25 +09:00
inits.h internal/*.h: skip doxygen 2021-09-10 20:00:06 +09:00
io.h Hide most of the implementation of struct rb_io. (#6511) 2023-05-30 10:02:40 +09:00
load.h internal/*.h: skip doxygen 2021-09-10 20:00:06 +09:00
loadpath.h internal/*.h: skip doxygen 2021-09-10 20:00:06 +09:00
math.h internal/*.h: skip doxygen 2021-09-10 20:00:06 +09:00
missing.h internal/*.h: skip doxygen 2021-09-10 20:00:06 +09:00
numeric.h Stop exporting symbols for MJIT 2023-03-06 21:59:23 -08:00
object.h Stop exporting symbols for MJIT 2023-03-06 21:59:23 -08:00
parse.h Revert "reuse open(2) from rb_file_load_ok on POSIX-like system" 2023-02-27 09:24:45 -08:00
proc.h Stop exporting symbols for MJIT 2023-03-06 21:59:23 -08:00
process.h Put rb_fork back into process.c 2023-05-21 23:00:27 +09:00
ractor.h internal/ractor.h: Added 2022-03-30 16:50:46 +09:00
random.h internal/*.h: skip doxygen 2021-09-10 20:00:06 +09:00
range.h internal/*.h: skip doxygen 2021-09-10 20:00:06 +09:00
rational.h Don't redefine RB_OBJ_WRITE 2023-01-18 08:49:32 -05:00
re.h Stop exporting symbols for MJIT 2023-03-06 21:59:23 -08:00
sanitizers.h Remove obsoleted MJIT_HEADER macro 2023-03-06 22:29:35 -08:00
serial.h internal/*.h: skip doxygen 2021-09-10 20:00:06 +09:00
signal.h internal/*.h: skip doxygen 2021-09-10 20:00:06 +09:00
static_assert.h internal/*.h: skip doxygen 2021-09-10 20:00:06 +09:00
string.h Stop exporting symbols for MJIT 2023-03-06 21:59:23 -08:00
struct.h Don't redefine RB_OBJ_WRITE 2023-01-18 08:49:32 -05:00
symbol.h Ensure _id2ref finds symbols with the correct type 2022-07-20 10:38:44 -07:00
thread.h Fix busy-loop when waiting for file descriptors to close 2023-05-26 14:51:23 +09:00
time.h internal/*.h: skip doxygen 2021-09-10 20:00:06 +09:00
transcode.h internal/*.h: skip doxygen 2021-09-10 20:00:06 +09:00
util.h internal/*.h: skip doxygen 2021-09-10 20:00:06 +09:00
variable.h Stop exporting symbols for MJIT 2023-03-06 21:59:23 -08:00
vm.h Remove unused jit_enable_p flag 2023-03-14 14:01:53 -07:00
warnings.h internal/*.h: skip doxygen 2021-09-10 20:00:06 +09:00