File tree Expand file tree Collapse file tree 3 files changed +21
-6
lines changed
spec/ruby/optional/capi/ext Expand file tree Collapse file tree 3 files changed +21
-6
lines changed Original file line number Diff line number Diff line change @@ -610,6 +610,14 @@ int rb_ioptr_descriptor(const rb_io_t *fptr);
610610 */
611611VALUE rb_ioptr_tied_io_for_writing (const rb_io_t *fptr);
612612
613+ /* *
614+ * Returns all the io mode flags, e.g. FMODE_SYNC.
615+ *
616+ * @param[in] fptr An IO fptr.
617+ * @retval enum rb_io_mode The flags.
618+ */
619+ enum rb_io_mode rb_ioptr_mode (const rb_io_t *fptr);
620+
613621RBIMPL_ATTR_NORETURN ()
614622void rb_ioptr_sys_fail(rb_io_t *fptr);
615623
Original file line number Diff line number Diff line change @@ -2775,6 +2775,12 @@ rb_ioptr_tied_io_for_writing(const rb_io_t *fptr)
27752775 return fptr -> tied_io_for_writing ;
27762776}
27772777
2778+ enum rb_io_mode
2779+ rb_ioptr_mode (const rb_io_t * fptr )
2780+ {
2781+ return fptr -> mode ;
2782+ }
2783+
27782784/*
27792785 * call-seq:
27802786 * pid -> integer or nil
Original file line number Diff line number Diff line change @@ -229,7 +229,7 @@ VALUE io_spec_rb_io_set_nonblock(VALUE self, VALUE io) {
229229 GetOpenFile (io , fp );
230230 rb_io_set_nonblock (fp );
231231#ifdef F_GETFL
232- flags = fcntl (fp -> fd , F_GETFL , 0 );
232+ flags = fcntl (io_spec_get_fd ( io ) , F_GETFL , 0 );
233233 return flags & O_NONBLOCK ? Qtrue : Qfalse ;
234234#else
235235 return Qfalse ;
@@ -250,11 +250,12 @@ static VALUE io_spec_errno_set(VALUE self, VALUE val) {
250250VALUE io_spec_mode_sync_flag (VALUE self , VALUE io ) {
251251 rb_io_t * fp ;
252252 GetOpenFile (io , fp );
253- if (fp -> mode & FMODE_SYNC ) {
254- return Qtrue ;
255- } else {
256- return Qfalse ;
257- }
253+
254+ #ifdef RUBY_VERSION_IS_3_2
255+ return RBOOL (rb_ioptr_mode (fp ) & FMODE_SYNC );
256+ #else
257+ return RBOOL (fp -> mode & FMODE_SYNC );
258+ #endif
258259}
259260
260261void Init_io_spec (void ) {
You can’t perform that action at this time.
0 commit comments