diff options
author | Samuel Williams <[email protected]> | 2023-05-30 10:02:40 +0900 |
---|---|---|
committer | <[email protected]> | 2023-05-30 10:02:40 +0900 |
commit | 18e55fc1e1ec20e8f3166e3059e76c885fc9f8f2 () | |
tree | 7e35773b3cd1ae50a0a94937df7fb175a3bed9ba /internal/io.h | |
parent | 7ddcd0622f3275effa603c16934b0215cc8a542b (diff) |
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 <[email protected]>
Notes: Merged-By: ioquatix <[email protected]>
-rw-r--r-- | internal/io.h | 119 |
1 files changed, 118 insertions, 1 deletions
@@ -8,8 +8,125 @@ * file COPYING are met. Consult the file for details. * @brief Internal header for IO. */ #include "ruby/ruby.h" /* for VALUE */ -#include "ruby/io.h" /* for rb_io_t */ /* io.c */ void ruby_set_inplace_mode(const char *); |