aboutsummaryrefslogtreecommitdiffstats
path: root/io.c
diff options
context:
space:
mode:
Diffstat (limited to 'io.c')
-rw-r--r--io.c38
1 files changed, 20 insertions, 18 deletions
diff --git a/io.c b/io.c
index 7f43ca36d6..44f608753f 100644
--- a/io.c
+++ b/io.c
@@ -13014,53 +13014,55 @@ argf_write(VALUE argf, VALUE str)
}
void
-rb_readwrite_sys_fail(enum rb_io_wait_readwrite writable, const char *mesg)
+rb_readwrite_sys_fail(enum rb_io_wait_readwrite waiting, const char *mesg)
{
- rb_readwrite_syserr_fail(writable, errno, mesg);
+ rb_readwrite_syserr_fail(waiting, errno, mesg);
}
void
-rb_readwrite_syserr_fail(enum rb_io_wait_readwrite writable, int n, const char *mesg)
+rb_readwrite_syserr_fail(enum rb_io_wait_readwrite waiting, int n, const char *mesg)
{
- VALUE arg;
+ VALUE arg, c = Qnil;
arg = mesg ? rb_str_new2(mesg) : Qnil;
- if (writable == RB_IO_WAIT_WRITABLE) {
+ switch (waiting) {
+ case RB_IO_WAIT_WRITABLE:
switch (n) {
case EAGAIN:
- rb_exc_raise(rb_class_new_instance(1, &arg, rb_eEAGAINWaitWritable));
+ c = rb_eEAGAINWaitWritable;
break;
#if EAGAIN != EWOULDBLOCK
case EWOULDBLOCK:
- rb_exc_raise(rb_class_new_instance(1, &arg, rb_eEWOULDBLOCKWaitWritable));
+ c = rb_eEWOULDBLOCKWaitWritable;
break;
#endif
case EINPROGRESS:
- rb_exc_raise(rb_class_new_instance(1, &arg, rb_eEINPROGRESSWaitWritable));
+ c = rb_eEINPROGRESSWaitWritable;
break;
default:
- rb_mod_sys_fail_str(rb_mWaitWritable, arg);
+ rb_mod_syserr_fail_str(rb_mWaitWritable, n, arg);
}
- }
- else if (writable == RB_IO_WAIT_READABLE) {
+ break;
+ case RB_IO_WAIT_READABLE:
switch (n) {
case EAGAIN:
- rb_exc_raise(rb_class_new_instance(1, &arg, rb_eEAGAINWaitReadable));
+ c = rb_eEAGAINWaitReadable;
break;
#if EAGAIN != EWOULDBLOCK
case EWOULDBLOCK:
- rb_exc_raise(rb_class_new_instance(1, &arg, rb_eEWOULDBLOCKWaitReadable));
+ c = rb_eEWOULDBLOCKWaitReadable;
break;
#endif
case EINPROGRESS:
- rb_exc_raise(rb_class_new_instance(1, &arg, rb_eEINPROGRESSWaitReadable));
+ c = rb_eEINPROGRESSWaitReadable;
break;
default:
- rb_mod_sys_fail_str(rb_mWaitReadable, arg);
+ rb_mod_syserr_fail_str(rb_mWaitReadable, n, arg);
}
+ break;
+ default:
+ rb_bug("invalid read/write type passed to rb_readwrite_sys_fail: %d", waiting);
}
- else {
- rb_bug("invalid read/write type passed to rb_readwrite_sys_fail: %d", writable);
- }
+ rb_exc_raise(rb_class_new_instance(1, &arg, c));
}
static VALUE