From 74ba9c248890b2395131bccb92fb099a8512ab63 Mon Sep 17 00:00:00 2001 From: nobu Date: Tue, 9 Apr 2013 00:42:33 +0000 Subject: io.c: define EWOULDBLOCK * io.c (Init_IO): define EWOULDBLOCK alway as it is needed always. and turn runtime branch into preprocessor condition. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40203 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- io.c | 73 ++++++++++++++++++++++++++++++++++++-------------------------------- 1 file changed, 39 insertions(+), 34 deletions(-) diff --git a/io.c b/io.c index 42388ac147..bea5ab5bae 100644 --- a/io.c +++ b/io.c @@ -110,6 +110,10 @@ # endif #endif +#ifndef EWOULDBLOCK +# define EWOULDBLOCK EAGAIN +#endif + #if defined(HAVE___SYSCALL) && (defined(__APPLE__) || defined(__OpenBSD__)) /* Mac OS X and OpenBSD have __syscall but don't define it in headers */ off_t __syscall(quad_t number, ...); @@ -11471,38 +11475,39 @@ rb_readwrite_sys_fail(int writable, const char *mesg) arg = mesg ? rb_str_new2(mesg) : Qnil; if (writable == RB_IO_WAIT_WRITABLE) { switch (n) { - case EAGAIN: - rb_exc_raise(rb_class_new_instance(1, &arg, rb_eEAGAINWaitWritable)); - break; + case EAGAIN: + rb_exc_raise(rb_class_new_instance(1, &arg, rb_eEAGAINWaitWritable)); + break; #if EAGAIN != EWOULDBLOCK - case EWOULDBLOCK: - rb_exc_raise(rb_class_new_instance(1, &arg, rb_eEWOULDBLOCKWaitWritable)); - break; + case EWOULDBLOCK: + rb_exc_raise(rb_class_new_instance(1, &arg, rb_eEWOULDBLOCKWaitWritable)); + break; #endif - case EINPROGRESS: - rb_exc_raise(rb_class_new_instance(1, &arg, rb_eEINPROGRESSWaitWritable)); - break; - default: - rb_mod_sys_fail_str(rb_mWaitWritable, arg); + case EINPROGRESS: + rb_exc_raise(rb_class_new_instance(1, &arg, rb_eEINPROGRESSWaitWritable)); + break; + default: + rb_mod_sys_fail_str(rb_mWaitWritable, arg); } } else if (writable == RB_IO_WAIT_READABLE) { switch (n) { - case EAGAIN: - rb_exc_raise(rb_class_new_instance(1, &arg, rb_eEAGAINWaitReadable)); - break; + case EAGAIN: + rb_exc_raise(rb_class_new_instance(1, &arg, rb_eEAGAINWaitReadable)); + break; #if EAGAIN != EWOULDBLOCK - case EWOULDBLOCK: - rb_exc_raise(rb_class_new_instance(1, &arg, rb_eEWOULDBLOCKWaitReadable)); - break; + case EWOULDBLOCK: + rb_exc_raise(rb_class_new_instance(1, &arg, rb_eEWOULDBLOCKWaitReadable)); + break; #endif - case EINPROGRESS: - rb_exc_raise(rb_class_new_instance(1, &arg, rb_eEINPROGRESSWaitReadable)); - break; - default: - rb_mod_sys_fail_str(rb_mWaitReadable, arg); + case EINPROGRESS: + rb_exc_raise(rb_class_new_instance(1, &arg, rb_eEINPROGRESSWaitReadable)); + break; + default: + rb_mod_sys_fail_str(rb_mWaitReadable, arg); } - } else { + } + else { rb_bug("invalid read/write type passed to rb_readwrite_sys_fail: %d", writable); } } @@ -11719,17 +11724,17 @@ Init_IO(void) rb_include_module(rb_eEAGAINWaitReadable, rb_mWaitReadable); rb_eEAGAINWaitWritable = rb_define_class_under(rb_cIO, "EAGAINWaitWritable", rb_eEAGAIN); rb_include_module(rb_eEAGAINWaitWritable, rb_mWaitWritable); - if (EAGAIN == EWOULDBLOCK) { - rb_eEWOULDBLOCKWaitReadable = rb_eEAGAINWaitReadable; - rb_define_const(rb_cIO, "EWOULDBLOCKWaitReadable", rb_eEAGAINWaitReadable); - rb_eEWOULDBLOCKWaitWritable = rb_eEAGAINWaitWritable; - rb_define_const(rb_cIO, "EWOULDBLOCKWaitWritable", rb_eEAGAINWaitWritable); - } else { - rb_eEWOULDBLOCKWaitReadable = rb_define_class_under(rb_cIO, "EWOULDBLOCKRWaiteadable", rb_eEWOULDBLOCK); - rb_include_module(rb_eEWOULDBLOCKWaitReadable, rb_mWaitReadable); - rb_eEWOULDBLOCKWaitWritable = rb_define_class_under(rb_cIO, "EWOULDBLOCKWaitWritable", rb_eEWOULDBLOCK); - rb_include_module(rb_eEWOULDBLOCKWaitWritable, rb_mWaitWritable); - } +#if EAGAIN == EWOULDBLOCK + rb_eEWOULDBLOCKWaitReadable = rb_eEAGAINWaitReadable; + rb_define_const(rb_cIO, "EWOULDBLOCKWaitReadable", rb_eEAGAINWaitReadable); + rb_eEWOULDBLOCKWaitWritable = rb_eEAGAINWaitWritable; + rb_define_const(rb_cIO, "EWOULDBLOCKWaitWritable", rb_eEAGAINWaitWritable); +#else + rb_eEWOULDBLOCKWaitReadable = rb_define_class_under(rb_cIO, "EWOULDBLOCKRWaiteadable", rb_eEWOULDBLOCK); + rb_include_module(rb_eEWOULDBLOCKWaitReadable, rb_mWaitReadable); + rb_eEWOULDBLOCKWaitWritable = rb_define_class_under(rb_cIO, "EWOULDBLOCKWaitWritable", rb_eEWOULDBLOCK); + rb_include_module(rb_eEWOULDBLOCKWaitWritable, rb_mWaitWritable); +#endif rb_eEINPROGRESSWaitReadable = rb_define_class_under(rb_cIO, "EINPROGRESSWaitReadable", rb_eEINPROGRESS); rb_include_module(rb_eEINPROGRESSWaitReadable, rb_mWaitReadable); rb_eEINPROGRESSWaitWritable = rb_define_class_under(rb_cIO, "EINPROGRESSWaitWritable", rb_eEINPROGRESS); -- cgit v1.2.3