From 0c838b4947a36ea0f706dfbd131b92de9a7b18a3 Mon Sep 17 00:00:00 2001 From: akr Date: Thu, 1 Jan 2009 07:49:31 +0000 Subject: * ext/socket/mkconstants.rb: generate family_to_int(). * ext/socket/socket.c (setup_domain_and_type): use family_to_int. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@21240 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ext/socket/socket.c | 48 ++++++------------------------------------------ 1 file changed, 6 insertions(+), 42 deletions(-) (limited to 'ext/socket/socket.c') diff --git a/ext/socket/socket.c b/ext/socket/socket.c index fe972ce5f7..8b30619733 100644 --- a/ext/socket/socket.c +++ b/ext/socket/socket.c @@ -2280,6 +2280,8 @@ unix_peeraddr(VALUE sock) } #endif +static int family_to_int(char *str, int len); + static void setup_domain_and_type(VALUE domain, int *dv, VALUE type, int *tv) { @@ -2288,51 +2290,13 @@ setup_domain_and_type(VALUE domain, int *dv, VALUE type, int *tv) tmp = rb_check_string_type(domain); if (!NIL_P(tmp)) { + int family; domain = tmp; rb_check_safe_obj(domain); - ptr = RSTRING_PTR(domain); - if (strcmp(ptr, "AF_INET") == 0) - *dv = AF_INET; -#ifdef AF_UNIX - else if (strcmp(ptr, "AF_UNIX") == 0) - *dv = AF_UNIX; -#endif -#ifdef AF_ISO - else if (strcmp(ptr, "AF_ISO") == 0) - *dv = AF_ISO; -#endif -#ifdef AF_NS - else if (strcmp(ptr, "AF_NS") == 0) - *dv = AF_NS; -#endif -#ifdef AF_IMPLINK - else if (strcmp(ptr, "AF_IMPLINK") == 0) - *dv = AF_IMPLINK; -#endif -#ifdef PF_INET - else if (strcmp(ptr, "PF_INET") == 0) - *dv = PF_INET; -#endif -#ifdef PF_UNIX - else if (strcmp(ptr, "PF_UNIX") == 0) - *dv = PF_UNIX; -#endif -#ifdef PF_IMPLINK - else if (strcmp(ptr, "PF_IMPLINK") == 0) - *dv = PF_IMPLINK; - else if (strcmp(ptr, "AF_IMPLINK") == 0) - *dv = AF_IMPLINK; -#endif -#ifdef PF_AX25 - else if (strcmp(ptr, "PF_AX25") == 0) - *dv = PF_AX25; -#endif -#ifdef PF_IPX - else if (strcmp(ptr, "PF_IPX") == 0) - *dv = PF_IPX; -#endif - else + family = family_to_int(RSTRING_PTR(domain), RSTRING_LEN(domain)); + if (family == -1) rb_raise(rb_eSocket, "unknown socket domain %s", ptr); + *dv = family; } else { *dv = NUM2INT(domain); -- cgit v1.2.3