static VALUE setup_group(struct group *grp) { VALUE mem; char **tbl; mem = rb_ary_new(); tbl = grp->gr_mem; while (*tbl) { rb_ary_push(mem, safe_setup_str(*tbl)); tbl++; } return rb_struct_new(sGroup, safe_setup_str(grp->gr_name), #ifdef HAVE_ST_GR_PASSWD safe_setup_str(grp->gr_passwd), #endif GIDT2NUM(grp->gr_gid), mem); }
static VALUE setup_passwd(struct passwd *pwd) { if (pwd == 0) rb_sys_fail("/etc/passwd"); return rb_struct_new(sPasswd, safe_setup_locale_str(pwd->pw_name), #ifdef HAVE_STRUCT_PASSWD_PW_PASSWD safe_setup_str(pwd->pw_passwd), #endif UIDT2NUM(pwd->pw_uid), GIDT2NUM(pwd->pw_gid), #ifdef HAVE_STRUCT_PASSWD_PW_GECOS safe_setup_locale_str(pwd->pw_gecos), #endif safe_setup_filesystem_str(pwd->pw_dir), safe_setup_filesystem_str(pwd->pw_shell), #ifdef HAVE_STRUCT_PASSWD_PW_CHANGE INT2NUM(pwd->pw_change), #endif #ifdef HAVE_STRUCT_PASSWD_PW_QUOTA INT2NUM(pwd->pw_quota), #endif #ifdef HAVE_STRUCT_PASSWD_PW_AGE PW_AGE2VAL(pwd->pw_age), #endif #ifdef HAVE_STRUCT_PASSWD_PW_CLASS safe_setup_locale_str(pwd->pw_class), #endif #ifdef HAVE_STRUCT_PASSWD_PW_COMMENT safe_setup_locale_str(pwd->pw_comment), #endif #ifdef HAVE_STRUCT_PASSWD_PW_EXPIRE INT2NUM(pwd->pw_expire), #endif 0 /*dummy*/ ); }