diff options
author | eban <eban@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2002-09-08 10:00:43 +0000 |
---|---|---|
committer | eban <eban@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2002-09-08 10:00:43 +0000 |
commit | b8ff4a843e4dbf1fab1f033a660f80cccf6a095d (patch) | |
tree | 9516ab54f8cd4b5c5f2a0e97b0d1cb9567cba6c7 /ext | |
parent | d76fdc013bea0cd7881fb2d49e94264c834f374b (diff) | |
download | ruby-b8ff4a843e4dbf1fab1f033a660f80cccf6a095d.tar.gz |
* lib/mkmf.rb (have_struct_member): moved from ext/socket/extconf.rb.
* ext/socket/extconf.rb: use macro_defined? instead of egrep_cpp.
* ext/etc/extconf.rb: use have_struct_member.
* ext/etc/etc.c: add prefix HAVE_ST_ to PW_ macros.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2821 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ext')
-rw-r--r-- | ext/etc/etc.c | 28 | ||||
-rw-r--r-- | ext/etc/extconf.rb | 20 | ||||
-rw-r--r-- | ext/socket/extconf.rb | 64 |
3 files changed, 26 insertions, 86 deletions
diff --git a/ext/etc/etc.c b/ext/etc/etc.c index 76af10be77..b10943458d 100644 --- a/ext/etc/etc.c +++ b/ext/etc/etc.c @@ -58,27 +58,27 @@ setup_passwd(pwd) rb_tainted_str_new2(pwd->pw_passwd), INT2FIX(pwd->pw_uid), INT2FIX(pwd->pw_gid), -#ifdef PW_GECOS +#ifdef HAVE_ST_PW_GECOS rb_tainted_str_new2(pwd->pw_gecos), #endif rb_tainted_str_new2(pwd->pw_dir), rb_tainted_str_new2(pwd->pw_shell), -#ifdef PW_CHANGE +#ifdef HAVE_ST_PW_CHANGE INT2FIX(pwd->pw_change), #endif -#ifdef PW_QUOTA +#ifdef HAVE_ST_PW_QUOTA INT2FIX(pwd->pw_quota), #endif -#ifdef PW_AGE +#ifdef HAVE_ST_PW_AGE INT2FIX(pwd->pw_age), #endif -#ifdef PW_CLASS +#ifdef HAVE_ST_PW_CLASS rb_tainted_str_new2(pwd->pw_class), #endif -#ifdef PW_COMMENT +#ifdef HAVE_ST_PW_COMMENT rb_tainted_str_new2(pwd->pw_comment), #endif -#ifdef PW_EXPIRE +#ifdef HAVE_ST_PW_EXPIRE INT2FIX(pwd->pw_expire), #endif 0 /*dummy*/ @@ -294,26 +294,26 @@ Init_etc() sPasswd = rb_struct_define("Passwd", "name", "passwd", "uid", "gid", -#ifdef PW_GECOS +#ifdef HAVE_ST_PW_GECOS "gecos", #endif "dir", "shell", -#ifdef PW_CHANGE +#ifdef HAVE_ST_PW_CHANGE "change", #endif -#ifdef PW_QUOTA +#ifdef HAVE_ST_PW_QUOTA "quota", #endif -#ifdef PW_AGE +#ifdef HAVE_ST_PW_AGE "age", #endif -#ifdef PW_CLASS +#ifdef HAVE_ST_PW_CLASS "uclass", #endif -#ifdef PW_COMMENT +#ifdef HAVE_ST_PW_COMMENT "comment", #endif -#ifdef PW_EXPIRE +#ifdef HAVE_ST_PW_EXPIRE "expire", #endif 0); diff --git a/ext/etc/extconf.rb b/ext/etc/extconf.rb index b920d91a95..bf6890ca9d 100644 --- a/ext/etc/extconf.rb +++ b/ext/etc/extconf.rb @@ -1,22 +1,16 @@ require 'mkmf' -def etc_grep_header(field) - if egrep_cpp(field, "#include <pwd.h>\n") - $defs.push(format("-D%s", field.upcase)) - end -end - have_library("sun", "getpwnam") # NIS (== YP) interface for IRIX 4 a = have_func("getlogin") b = have_func("getpwent") c = have_func("getgrent") if a or b or c - etc_grep_header("pw_gecos") - etc_grep_header("pw_change") - etc_grep_header("pw_quota") - etc_grep_header("pw_age") - etc_grep_header("pw_class") - etc_grep_header("pw_comment") unless /cygwin/ === RUBY_PLATFORM - etc_grep_header("pw_expire") + have_struct_member('struct passwd', 'pw_gecos', 'pwd.h') + have_struct_member('struct passwd', 'pw_change', 'pwd.h') + have_struct_member('struct passwd', 'pw_quota', 'pwd.h') + have_struct_member('struct passwd', 'pw_age', 'pwd.h') + have_struct_member('struct passwd', 'pw_class', 'pwd.h') + have_struct_member('struct passwd', 'pw_comment', 'pwd.h') unless /cygwin/ === RUBY_PLATFORM + have_struct_member('struct passwd', 'pw_expire', 'pwd.h') create_makefile("etc") end diff --git a/ext/socket/extconf.rb b/ext/socket/extconf.rb index e178533bdc..6b03307f97 100644 --- a/ext/socket/extconf.rb +++ b/ext/socket/extconf.rb @@ -2,42 +2,6 @@ require 'mkmf' $CPPFLAGS += " -Dss_family=__ss_family -Dss_len=__ss_len" -def have_struct_member(type, member, header=nil) - #printf "checking for %s.%s... ", type, member - #STDOUT.flush - - libs = $libs - src = - if /mswin32|mingw/ =~ RUBY_PLATFORM - r = <<"SRC" -#include <windows.h> -#include <winsock.h> -SRC - else - "" - end - unless header.nil? - header = [header] unless header.kind_of? Array - header.each {|h| - src << <<"SRC" -#include <#{h}> -SRC - } - end - src << <<"SRC" -int main() { return 0; } -int s = (char *)&((#{type}*)0)->#{member} - (char *)0; -SRC - r = try_link(src, libs) # xxx try_compile is not available. - unless r - #print "no\n" - return false - end - $defs.push(format("-DHAVE_ST_%s", member.upcase)) - #print "yes\n" - return true -end - case RUBY_PLATFORM when /bccwin32/ test_func = "WSACleanup" @@ -48,10 +12,7 @@ when /mswin32|mingw/ have_library("wsock32", "WSACleanup") have_func("closesocket") when /cygwin/ -# $LDFLAGS << " -L/usr/lib" if File.directory?("/usr/lib") -# $CFLAGS << " -I/usr/include" test_func = "socket" -# have_library("bind", "gethostbyaddr") when /beos/ test_func = "socket" have_library("net", "socket") @@ -86,19 +47,13 @@ $ipv6lib = nil $ipv6libdir = nil $ipv6trylibc = nil if $ipv6 - if egrep_cpp("yes", <<EOF) + if macro_defined?("IPV6_INRIA_VERSION", <<EOF) #include <netinet/in.h> -#ifdef IPV6_INRIA_VERSION -yes -#endif EOF $ipv6type = "inria" $CFLAGS="-DINET6 "+$CFLAGS - elsif egrep_cpp("yes", <<EOF) + elsif macro_defined?("__KAME__", <<EOF) #include <netinet/in.h> -#ifdef __KAME__ -yes -#endif EOF $ipv6type = "kame" $ipv6lib="inet6" @@ -110,31 +65,22 @@ EOF $ipv6lib="inet6" $ipv6libdir="/usr/inet6/lib" $CFLAGS="-DINET6 -I/usr/inet6/include "+$CFLAGS - elsif egrep_cpp("yes", <<EOF) + elsif macro_defined?("_TOSHIBA_INET6", <<EOF) #include <sys/param.h> -#ifdef _TOSHIBA_INET6 -yes -#endif EOF $ipv6type = "toshiba" $ipv6lib="inet6" $ipv6libdir="/usr/local/v6/lib" $CFLAGS="-DINET6 "+$CFLAGS - elsif egrep_cpp("yes", <<EOF) + elsif macro_defined?("__V6D__", <<EOF) #include </usr/local/v6/include/sys/v6config.h> -#ifdef __V6D__ -yes -#endif EOF $ipv6type = "v6d" $ipv6lib="v6" $ipv6libdir="/usr/local/v6/lib" $CFLAGS="-DINET6 -I/usr/local/v6/include "+$CFLAGS - elsif egrep_cpp("yes", <<EOF) + elsif macro_defined?("_ZETA_MINAMI_INET6", <<EOF) #include <sys/param.h> -#ifdef _ZETA_MINAMI_INET6 -yes -#endif EOF $ipv6type = "zeta" $ipv6lib="inet6" |