# Etc.getgrgid $B$,(B getgid $B$NCM$K8GDj$5$l$F$$$^$9(B

**URL:** <https://www.ruby-forum.com/t/etc-getgrgid-b-b-getgid-b-ncm-k8gdj-5-l-f-9-b/88867>\
**Category:** Development\
**Created:** [March 15, 2007, 4:37am UTC](https://www.ruby-forum.com/t/etc-getgrgid-b-b-getgid-b-ncm-k8gdj-5-l-f-9-b/88867 "2007-03-15T04:37:04Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![SSSBSSEDM5G7SSB](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/71c47a/32.png) [@SSSBSSEDM5G7SSB](https://www.ruby-forum.com/u/SSSBSSEDM5G7SSB)\
**Post date:** [March 15, 2007, 4:37am UTC](https://www.ruby-forum.com/t/etc-getgrgid-b-b-getgid-b-ncm-k8gdj-5-l-f-9-b/88867/1 "2007-03-15T04:37:04Z")

</div>

e$B?"ED$H?=$7$^$9!#e(B

e$B!!4{=P$+$b$7$l$^$;$s$,!“e(Bruby 1.8.6, 1.8.5-p32  
e$B6&$K!Ve(Bruby-1.8.5-p12 e$B$^$Ge(B  
e$B$OBg\>fIW$@$C$?e(B Etc.getgrgid  
e$B$,$\*$+$7$$!W$H$$$&Js9p$,\<RFb$G$”$j$^$7$?!#e(B

* * *

[root@example ~]# egrep ‘^root|^users’ /etc/group  
root:x:0:root  
users:x:100:foo,bar,hoge,fuga

## [root@example ~]$ irb irb(main):001:0\> require ‘etc’ =\> true irb(main):002:0\> Etc.getgrgid(100) =\> #\<struct Struct::Group name=“users”, passwd=“x”, gid=100, mem=[“foo”, “bar”, “hoge”, “fuga”]\> irb(main):003:0\> RUBY\_VERSION =\> “1.8.5” irb(main):004:0\> RUBY\_PLATFORM =\> “i686-linux” [root@example ~]$ irb irb(main):001:0\> require ‘etc’ =\> true irb(main):002:0\> Etc.getgrgid(100) =\> #\<struct Struct::Group name=“root”, passwd=“x”, gid=0, mem=[“root”]\> irb(main):003:0\> RUBY\_VERSION =\> “1.8.6” irb(main):004:0\> RUBY\_PLATFORM =\> “i686-linux”

e$B0J2\<$NJQ99$K$h$k1F6A$N$h$&$G$9!#e(B

[http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/tags/v1\_8\_5\_35/ext/etc/etc.c?r1=10775&r2=11521](http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/tags/v1_8_5_35/ext/etc/etc.c?r1=10775&r2=11521)  
[http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/tags/v1\_8\_6/ext/etc/etc.c?r1=10979&r2=11526](http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/tags/v1_8_6/ext/etc/etc.c?r1=10979&r2=11526)

getgrgid() e$B$KEO$9CM$re(B getgid()  
e$B$G\<hF@$7$F$$$k$N$G$9$,!"$3$l$@$He(B etc\_getgrgid(obj, id)  
e$B$Ne(B id e$B$,A4$/;H$o$l$^$;$s$7e(B…

e$B!!@5$7$/$J$$$3$H$O\>5CN$G0J2\<$N=$@5$r$9$k$H!“$H$j$”$($:e(B i386  
e$B$Ne(B CentOS  
4.4 e$B\>e$G$O@5$7$$7k2L$,F@$i$l$F$$$^$9!#e(B

— etc.c.orig 2007-03-15 12:07:33.000000000 +0900  
+++ etc.c 2007-03-15 12:15:06.000000000 +0900  
@@ -337,7 +337,8 @@  
struct group \*grp;

```
 rb_secure(4);

```

- gid = getgid();  
+/\* gid = getgid(); \*/

- gid = NUM2INT(id);  
grp = getgrgid(gid);  
if (grp == 0) rb\_raise(rb\_eArgError, “can’t find group for %d”,  
gid);  
return setup\_group(grp)

e$B!2!2!2!2!2!2!2!2!2!2!2!2!2!2!2!2#N#e#t#w#o#r#ke(B e$B!\_e(B  
e$B#P#e#o#p#l#e!2e(B  
e$B!1!1!1!1!1!1!1!1!1!1!1!1!1!1!1!1!1!1!1!1!1!1!1!1!1!1!1!1!1!1!1!1e(B  
e$B!!3t\<02q\<Re(B e$B%M%C%H%U%)%l%9%He(B  
e$B!!;v6H?d?J\<\<e(B Dr.WEB e$BC4Ev!!!e(B e$B!!!e(B e$B?“EDe(B  
e$BM5G7e(B  
e$B!!e(Bhttp://www.netforest.ad.jp/e$B!!!e(B removed\_email\_address@domain.invalid  
e$B!!e(Btel:045-663-6277e$B!!e(Bfax:045-663-6278  
e$B!2!2!2!2!2!2!2!2!2!2!2!2!2!2!2!2!2!2!2!2!2!2!2!2!2!2!2!2!2!2!2!2e(B  
e$B!1!1!1!1!1!1!1!1!1!1!1!1!1!1!1!1!1!1!1!1!1!1!1!1!1!1!1!1!1!1!1!1e(B  
e$B!!e(Bhttp://www.kamome.or.jp/ \<\<\< ISP FTTH/ADSL/AIR-EDGE/8&16IP  
e$B!!e(Bhttp://drweb.jp/e$B!!!e(B \<\<\< e$BM=B,$9$k%”%s%A%&%#%k%9e(B

---

<div class="post-metadata">

**Author:** ![SSSBSSEDM5G7SSB](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/71c47a/32.png) [@SSSBSSEDM5G7SSB](https://www.ruby-forum.com/u/SSSBSSEDM5G7SSB)\
**Post date:** [March 16, 2007, 9:40am UTC](https://www.ruby-forum.com/t/etc-getgrgid-b-b-getgid-b-ncm-k8gdj-5-l-f-9-b/88867/2 "2007-03-16T09:40:39Z")

</div>

At Thu, 15 Mar 2007 12:36:10 +0900,  
æ¤ç”°è£•ä¹‹ wrote:

> ã€€æ—¢å‡ºã‹ã‚‚ã—ã‚Œã¾ã›ã‚“ãŒã€ruby 1.8.6, 1.8.5-p32 å…±ã«ã€Œruby-1.8.5-p12 ã¾ã§  
> ã¯å¤§ä¸ˆå¤«ã ã£ãŸ Etc.getgrgid ãŒãŠã‹ã—ã„ã€ã¨ã„ã†å ±å‘ŠãŒç¤¾å†…ã§ã‚ã‚Šã¾ã—ãŸã€‚  
> (snip)  
> ä»¥ä¸‹ã®å¤‰æ›´ã«ã‚ˆã‚‹å½±éŸ¿ã®ã‚ˆã†ã§ã™ã€‚
> 
> [http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/tags/v1\_8\_5\_35/ext/etc/etc.c?r1=10775&r2=11521](http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/tags/v1_8_5_35/ext/etc/etc.c?r1=10775&r2=11521)  
> [http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/tags/v1\_8\_6/ext/etc/etc.c?r1=10979&r2=11526](http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/tags/v1_8_6/ext/etc/etc.c?r1=10979&r2=11526)
> 
> getgrgid() ã«æ¸¡ã™å€¤ã‚’ getgid() ã§å–å¾—ã—ã¦ã„ã‚‹ã®ã§ã™ãŒã€ã“ã‚Œã ã¨ etc\_getgrgid(obj, id)  
> ã® id ãŒå…¨ãä½¿ã‚ã‚Œã¾ã›ã‚“ã—…

ã€€ã“ã†ã§ã—ã‚‡ã†ã‹ã€‚

# Index: etc.c

— etc.c (revision 12068)  
+++ etc.c (working copy)  
@@ -337,7 +337,7 @@  
struct group \*grp;

```
 rb_secure(4);

```

- gid = getgid();

- gid = PW\_VAL2GID(id);  
grp = getgrgid(gid);  
if (grp == 0) rb\_raise(rb\_eArgError, “can’t find group for %d”,  
gid);  
return setup\_group(grp);

–  
/  
/\_\_ \_\_ [Akinori.org](http://Akinori.org) / [MUSHA.org](http://MUSHA.org)  
/ ) ) ) ) / [FreeBSD.org](http://FreeBSD.org) / [Ruby-lang.org](http://Ruby-lang.org)  
Akinori MUSHA aka / (\_ / ( (\_\_( @ [iDaemons.org](http://iDaemons.org) / and.or.jp

“Different eyes see different things,  
Different hearts beat on different strings –  
But there are times for you and me when all such things agree”

---

<div class="post-metadata">

**Author:** ![SSSBSSEDM5G7SSB](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/71c47a/32.png) [@SSSBSSEDM5G7SSB](https://www.ruby-forum.com/u/SSSBSSEDM5G7SSB)\
**Post date:** [March 16, 2007, 9:50am UTC](https://www.ruby-forum.com/t/etc-getgrgid-b-b-getgid-b-ncm-k8gdj-5-l-f-9-b/88867/3 "2007-03-16T09:50:40Z")

</div>

Fri, 16 Mar 2007 17:39:52 +0900 e$B$N%a!\<%k$K$F!"e(B  
“Akinori MUSHA” [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) e$B$5$s$O=q$-$^$7$?e(B :

> ```
> struct group *grp;
> 
> rb_secure(4);
> 
> ```
> 
> - gid = getgid();
> 
> - gid = PW\_VAL2GID(id);  
> grp = getgrgid(gid);  
> if (grp == 0) rb\_raise(rb\_eArgError, “can’t find group for %d”, gid);  
> return setup\_group(grp);

[http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=11786](http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=11786)  
e$B$O5$e(B  
e$B$K$7$J$/$F$bNI$$$G$9$+!)e(B

e$B$9$$$^$;$s!"NI$/J,$+$C$F$^$;$s$,e(B…

* * *

diff -rc ruby-1.8.6/ext/etc/etc.c ruby-1.8.6.patched/ext/etc/etc.c  
\*\*\* ruby-1.8.6/ext/etc/etc.c Tue Feb 13 08:01:19 2007  
— ruby-1.8.6.patched/ext/etc/etc.c Fri Mar 16 17:21:42 2007

* * *

\*\*\* 337,343 \*\*\*\*  
struct group \*grp;

```
  rb_secure(4);

```

! gid = getgid();  
grp = getgrgid(gid);  
if (grp == 0) rb\_raise(rb\_eArgError, “can’t find group for %d”,  
gid);  
return setup\_group(grp);  
— 337,343 ----  
struct group \*grp;

```
  rb_secure(4);

```

! gid = NUM2GIDT(id);  
grp = getgrgid(gid);  
if (grp == 0) rb\_raise(rb\_eArgError, “can’t find group for %d”,  
gid);  
return setup\_group(grp);  
diff -rc ruby-1.8.6/ruby.h ruby-1.8.6.patched/ruby.h  
\*\*\* ruby-1.8.6/ruby.h Thu Feb 15 11:52:43 2007  
— ruby-1.8.6.patched/ruby.h Fri Mar 16 17:21:25 2007

* * *

\*\*\* 163,168 \*\*\*\*  
— 163,187 ----

# define OFFT2NUM(v) INT2NUM(v)

#endif

- #ifndef PIDT2NUM
- #define PIDT2NUM(v) LONG2NUM(v)
- #endif
- #ifndef NUM2PIDT
- #define NUM2PIDT(v) NUM2LONG(v)
- #endif
- #ifndef UIDT2NUM
- #define UIDT2NUM(v) LONG2NUM(v)
- #endif
- #ifndef NUM2UIDT
- #define NUM2UIDT(v) NUM2LONG(v)
- #endif
- #ifndef GIDT2NUM
- #define GIDT2NUM(v) LONG2NUM(v)
- #endif
- #ifndef NUM2GIDT
- #define NUM2GIDT(v) NUM2LONG(v)
- #endif
- #define FIX2LONG(x) RSHIFT((long)x,1)  
#define FIX2ULONG(x) (((unsigned long)(x))\>\>1)  
#define FIXNUM\_P(f) (((long)(f))&FIXNUM\_FLAG)

e$B!2!2!2!2!2!2!2!2!2!2!2!2!2!2!2!2#N#e#t#w#o#r#ke(B e$B!\_e(B  
e$B#P#e#o#p#l#e!2e(B  
e$B!1!1!1!1!1!1!1!1!1!1!1!1!1!1!1!1!1!1!1!1!1!1!1!1!1!1!1!1!1!1!1!1e(B  
e$B!!3t\<02q\<Re(B e$B%M%C%H%U%)%l%9%He(B  
e$B!!;v6H?d?J\<\<e(B Dr.WEB e$BC4Ev!!!e(B e$B!!!e(B e$B?“EDe(B  
e$BM5G7e(B  
e$B!!e(Bhttp://www.netforest.ad.jp/e$B!!!e(B removed\_email\_address@domain.invalid  
e$B!!e(Btel:045-663-6277e$B!!e(Bfax:045-663-6278  
e$B!2!2!2!2!2!2!2!2!2!2!2!2!2!2!2!2!2!2!2!2!2!2!2!2!2!2!2!2!2!2!2!2e(B  
e$B!1!1!1!1!1!1!1!1!1!1!1!1!1!1!1!1!1!1!1!1!1!1!1!1!1!1!1!1!1!1!1!1e(B  
e$B!!e(Bhttp://www.kamome.or.jp/ \<\<\< ISP FTTH/ADSL/AIR-EDGE/8&16IP  
e$B!!e(Bhttp://drweb.jp/e$B!!!e(B \<\<\< e$BM=B,$9$k%”%s%A%&%#%k%9e(B

---

<div class="post-metadata">

**Author:** ![SSSBSSEDM5G7SSB](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/71c47a/32.png) [@SSSBSSEDM5G7SSB](https://www.ruby-forum.com/u/SSSBSSEDM5G7SSB)\
**Post date:** [March 16, 2007, 10:20am UTC](https://www.ruby-forum.com/t/etc-getgrgid-b-b-getgid-b-ncm-k8gdj-5-l-f-9-b/88867/4 "2007-03-16T10:20:48Z")

</div>

e$B?"ED$G$9!#e(B

> Fri, 16 Mar 2007 17:39:52 +0900 e$B$N%a!\<%k$K$F!"e(B  
> “Akinori MUSHA” [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) e$B$5$s$O=q$-$^$7$?e(B :  
> :
> 
> > - gid = getgid();
> > 
> > - gid = PW\_VAL2GID(id);  
> > grp = getgrgid(gid);  
> > if (grp == 0) rb\_raise(rb\_eArgError, “can’t find group for %d”, gid);  
> > return setup\_group(grp);

e$B$3$A$i$N=$@5$G$bL^O@LdBj$"$j$^$;$s$G$7$?!#e(B

$ for i in 0 1 511; do ruby -r ‘etc’ -e “p Etc.getgrgid($i)”; done  
#\<struct Struct::Group name=“root”, passwd=“”, gid=0, mem=[“root”]\>  
#\<struct Struct::Group name=“bin”, passwd=“”, gid=1, mem=[“root”, “bin”,  
“daemon”]\>  
#\<struct Struct::Group name=“ueda”, passwd=“x”, gid=511, mem=[]\>

e$B!2!2!2!2!2!2!2!2!2!2!2!2!2!2!2!2#N#e#t#w#o#r#ke(B e$B!\_e(B  
e$B#P#e#o#p#l#e!2e(B  
e$B!1!1!1!1!1!1!1!1!1!1!1!1!1!1!1!1!1!1!1!1!1!1!1!1!1!1!1!1!1!1!1!1e(B  
e$B!!3t\<02q\<Re(B e$B%M%C%H%U%)%l%9%He(B  
e$B!!;v6H?d?J\<\<e(B Dr.WEB e$BC4Ev!!!e(B e$B!!!e(B e$B?“EDe(B  
e$BM5G7e(B  
e$B!!e(Bhttp://www.netforest.ad.jp/e$B!!!e(B removed\_email\_address@domain.invalid  
e$B!!e(Btel:045-663-6277e$B!!e(Bfax:045-663-6278  
e$B!2!2!2!2!2!2!2!2!2!2!2!2!2!2!2!2!2!2!2!2!2!2!2!2!2!2!2!2!2!2!2!2e(B  
e$B!1!1!1!1!1!1!1!1!1!1!1!1!1!1!1!1!1!1!1!1!1!1!1!1!1!1!1!1!1!1!1!1e(B  
e$B!!e(Bhttp://www.kamome.or.jp/ \<\<\< ISP FTTH/ADSL/AIR-EDGE/8&16IP  
e$B!!e(Bhttp://drweb.jp/e$B!!!e(B \<\<\< e$BM=B,$9$k%”%s%A%&%#%k%9e(B

---

<div class="post-metadata">

**Author:** ![SSSBSSEDM5G7SSB](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/71c47a/32.png) [@SSSBSSEDM5G7SSB](https://www.ruby-forum.com/u/SSSBSSEDM5G7SSB)\
**Post date:** [March 16, 2007, 10:27am UTC](https://www.ruby-forum.com/t/etc-getgrgid-b-b-getgid-b-ncm-k8gdj-5-l-f-9-b/88867/5 "2007-03-16T10:27:49Z")

</div>

At Fri, 16 Mar 2007 17:49:23 +0900,  
æ¤ç”°è£•ä¹‹ wrote:

> > — etc.c (revision 12068)
> 
> [http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=11786](http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=11786) ã¯æ°—  
> ã«ã—ãªãã¦ã‚‚è‰¯ã„ã§ã™ã‹ï¼Ÿ
> 
> ã™ã„ã¾ã›ã‚“ã€è‰¯ãåˆ†ã‹ã£ã¦ã¾ã›ã‚“ãŒ…  
> (patch snipped)

ã€€ã“ã‚Œã ã¨ãƒãƒƒã‚¯ãƒãƒ¼ãƒˆã¨ã—ã¦ã¯ä¸­é€”åŠç«¯ãªã®ã§ã€ã¾ãšã¯ä¸Šè¨˜ã®ä¿®æ­£ã‚’  
å…¥ã‚Œã¦ã‹ã‚‰æ¤œè¨Žã—ãŸã„ã¨æ€ã„ã¾ã™ã€‚

ã€€ã”å ±å‘Šã”æ¤œè¨¼ã‚ã‚ŠãŒã¨ã†ã”ã–ã„ã¾ã—ãŸã€‚

–  
/  
/\_\_ \_\_ [Akinori.org](http://Akinori.org) / [MUSHA.org](http://MUSHA.org)  
/ ) ) ) ) / [FreeBSD.org](http://FreeBSD.org) / [Ruby-lang.org](http://Ruby-lang.org)  
Akinori MUSHA aka / (\_ / ( (\_\_( @ [iDaemons.org](http://iDaemons.org) / and.or.jp

“Different eyes see different things,  
Different hearts beat on different strings –  
But there are times for you and me when all such things agree”
