diff options
author | shyouhei <shyouhei@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2007-01-09 11:52:26 +0000 |
---|---|---|
committer | shyouhei <shyouhei@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2007-01-09 11:52:26 +0000 |
commit | 7295523013b2352dd13411d0b59a490b026825fd (patch) | |
tree | 133f0d63f57d1fb26ad2d829aafa9d1393e2f3d4 /ext/etc | |
parent | b3a71949487cba458f3b6882fecb1dcd54c8a0d6 (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/etc')
-rw-r--r-- | ext/etc/etc.c | 8 | ||||
-rw-r--r-- | ext/etc/extconf.rb | 4 |
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 |