Skip to content

Commit 15c2696

Browse files
committed
Check members only for defined structs
1 parent 00e9d2b commit 15c2696

File tree

1 file changed

+24
-22
lines changed

1 file changed

+24
-22
lines changed

ext/etc/extconf.rb

Lines changed: 24 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,30 @@
1010
have_library("sun", "getpwnam") # NIS (== YP) interface for IRIX 4
1111
have_func("uname((struct utsname *)NULL)", headers)
1212
have_func("getlogin")
13-
have_func("getpwent")
14-
have_func("getgrent")
13+
if have_func("getpwent")
14+
have_struct_member('struct passwd', 'pw_gecos', 'pwd.h')
15+
have_struct_member('struct passwd', 'pw_change', 'pwd.h')
16+
have_struct_member('struct passwd', 'pw_quota', 'pwd.h')
17+
if have_struct_member('struct passwd', 'pw_age', 'pwd.h')
18+
case what_type?('struct passwd', 'pw_age', 'pwd.h')
19+
when "string"
20+
f = "safe_setup_str"
21+
when "long long"
22+
f = "LL2NUM"
23+
else
24+
f = "INT2NUM"
25+
end
26+
$defs.push("-DPW_AGE2VAL="+f)
27+
end
28+
have_struct_member('struct passwd', 'pw_class', 'pwd.h')
29+
have_struct_member('struct passwd', 'pw_comment', 'pwd.h') unless /cygwin/ === RUBY_PLATFORM
30+
have_struct_member('struct passwd', 'pw_expire', 'pwd.h')
31+
have_struct_member('struct passwd', 'pw_passwd', 'pwd.h')
32+
end
33+
if have_func("getgrent")
34+
have_struct_member('struct group', 'gr_passwd', 'grp.h')
35+
end
36+
1537
if (sysconfdir = RbConfig::CONFIG["sysconfdir"] and
1638
!RbConfig.expand(sysconfdir.dup, "prefix"=>"", "DESTDIR"=>"").empty?)
1739
$defs.push("-DSYSCONFDIR=#{Shellwords.escape(sysconfdir.dump)}")
@@ -21,26 +43,6 @@
2143
have_func("confstr")
2244
have_func("fpathconf")
2345

24-
have_struct_member('struct passwd', 'pw_gecos', 'pwd.h')
25-
have_struct_member('struct passwd', 'pw_change', 'pwd.h')
26-
have_struct_member('struct passwd', 'pw_quota', 'pwd.h')
27-
if have_struct_member('struct passwd', 'pw_age', 'pwd.h')
28-
case what_type?('struct passwd', 'pw_age', 'pwd.h')
29-
when "string"
30-
f = "safe_setup_str"
31-
when "long long"
32-
f = "LL2NUM"
33-
else
34-
f = "INT2NUM"
35-
end
36-
$defs.push("-DPW_AGE2VAL="+f)
37-
end
38-
have_struct_member('struct passwd', 'pw_class', 'pwd.h')
39-
have_struct_member('struct passwd', 'pw_comment', 'pwd.h') unless /cygwin/ === RUBY_PLATFORM
40-
have_struct_member('struct passwd', 'pw_expire', 'pwd.h')
41-
have_struct_member('struct passwd', 'pw_passwd', 'pwd.h')
42-
have_struct_member('struct group', 'gr_passwd', 'grp.h')
43-
4446
# for https://github.com/ruby/etc
4547
srcdir = File.expand_path("..", __FILE__)
4648
constdefs = "#{srcdir}/constdefs.h"

0 commit comments

Comments
 (0)