summaryrefslogtreecommitdiff
path: root/ext
diff options
context:
space:
mode:
authorshyouhei <shyouhei@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2007-01-09 11:52:26 +0000
committershyouhei <shyouhei@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2007-01-09 11:52:26 +0000
commit7295523013b2352dd13411d0b59a490b026825fd (patch)
tree133f0d63f57d1fb26ad2d829aafa9d1393e2f3d4 /ext
parentb3a71949487cba458f3b6882fecb1dcd54c8a0d6 (diff)
r11523@ruby: shyouhei | 2007-01-09 15:57:58 +0900
* ext/etc/etc.c (etc_getpwuid, etc_getgrgid): fix to correctly convert uid/gid from VALUE. * ext/etc/etc.c (etc_getpwuid): ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8_5@11521 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ext')
-rw-r--r--ext/etc/etc.c8
-rw-r--r--ext/etc/extconf.rb4
2 files changed, 7 insertions, 5 deletions
diff --git a/ext/etc/etc.c b/ext/etc/etc.c
index c79640d02a..447d833bc7 100644
--- a/ext/etc/etc.c
+++ b/ext/etc/etc.c
@@ -126,12 +126,12 @@ etc_getpwuid(argc, argv, obj)
{
#if defined(HAVE_GETPWENT)
VALUE id;
- int uid;
+ uid_t uid;
struct passwd *pwd;
rb_secure(4);
if (rb_scan_args(argc, argv, "01", &id) == 1) {
- uid = NUM2INT(id);
+ uid = PW_VAL2UID(id);
}
else {
uid = getuid();
@@ -333,11 +333,11 @@ etc_getgrgid(obj, id)
VALUE obj, id;
{
#ifdef HAVE_GETGRENT
- int gid;
+ gid_t gid;
struct group *grp;
rb_secure(4);
- gid = NUM2INT(id);
+ gid = getgid();
grp = getgrgid(gid);
if (grp == 0) rb_raise(rb_eArgError, "can't find group for %d", gid);
return setup_group(grp);
diff --git a/ext/etc/extconf.rb b/ext/etc/extconf.rb
index 2496d36aa1..dbd0672545 100644
--- a/ext/etc/extconf.rb
+++ b/ext/etc/extconf.rb
@@ -35,7 +35,9 @@ if a or b or c
f = "U#{f}"
end
end
- $defs.push("-DPW_#{t.chomp('_t').upcase}2VAL=#{f}")
+ t = t.chomp('_t').upcase
+ $defs.push("-DPW_#{t}2VAL=#{f}")
+ $defs.push("-DPW_VAL2#{t}=#{f.sub(/([A-Z]+)2(NUM)/, '\22\1')}")
end
create_makefile("etc")
end