diff options
author | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2025-04-13 21:48:34 +0900 |
---|---|---|
committer | git <svn-admin@ruby-lang.org> | 2025-04-13 22:03:59 +0000 |
commit | 6d00fa2270131b049a5502406868a1c7741812ad (patch) | |
tree | 97b034053b694410d3110cb8db309a5943aa76fd | |
parent | e2559645421294d80315313d13385e8b948ab880 (diff) |
[ruby/etc] Check members only for defined structs
https://github.com/ruby/etc/commit/15c2696794
-rw-r--r-- | ext/etc/extconf.rb | 46 |
1 files changed, 24 insertions, 22 deletions
diff --git a/ext/etc/extconf.rb b/ext/etc/extconf.rb index 2e28d58037..3d7cceae40 100644 --- a/ext/etc/extconf.rb +++ b/ext/etc/extconf.rb @@ -10,8 +10,30 @@ headers = [] have_library("sun", "getpwnam") # NIS (== YP) interface for IRIX 4 have_func("uname((struct utsname *)NULL)", headers) have_func("getlogin") -have_func("getpwent") -have_func("getgrent") +if have_func("getpwent") + 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') + if have_struct_member('struct passwd', 'pw_age', 'pwd.h') + case what_type?('struct passwd', 'pw_age', 'pwd.h') + when "string" + f = "safe_setup_str" + when "long long" + f = "LL2NUM" + else + f = "INT2NUM" + end + $defs.push("-DPW_AGE2VAL="+f) + end + 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') + have_struct_member('struct passwd', 'pw_passwd', 'pwd.h') +end +if have_func("getgrent") + have_struct_member('struct group', 'gr_passwd', 'grp.h') +end + if (sysconfdir = RbConfig::CONFIG["sysconfdir"] and !RbConfig.expand(sysconfdir.dup, "prefix"=>"", "DESTDIR"=>"").empty?) $defs.push("-DSYSCONFDIR=#{Shellwords.escape(sysconfdir.dump)}") @@ -21,26 +43,6 @@ have_func("sysconf") have_func("confstr") have_func("fpathconf") -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') -if have_struct_member('struct passwd', 'pw_age', 'pwd.h') - case what_type?('struct passwd', 'pw_age', 'pwd.h') - when "string" - f = "safe_setup_str" - when "long long" - f = "LL2NUM" - else - f = "INT2NUM" - end - $defs.push("-DPW_AGE2VAL="+f) -end -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') -have_struct_member('struct passwd', 'pw_passwd', 'pwd.h') -have_struct_member('struct group', 'gr_passwd', 'grp.h') - # for https://github.com/ruby/etc srcdir = File.expand_path("..", __FILE__) constdefs = "#{srcdir}/constdefs.h" |