struct group
*getgrnam(), *grp
;
struct passwd
*getpwuid(), *pwd
;
char *getpass(), *crypt();
printf("usage: newgrp groupname\n");
if((grp
=getgrnam(argv
[1])) == NULL
) {
printf("%s: no such group\n", argv
[1]);
if((pwd
=getpwuid(getuid())) == NULL
) {
printf("You do not exist!\n");
for(i
=0;grp
->gr_mem
[i
];i
++)
if(strcmp(grp
->gr_mem
[i
], pwd
->pw_name
) == 0)
if(grp
->gr_mem
[i
] == 0 && strcmp(grp
->gr_name
,"other")) {
if(grp
->gr_passwd
[0] != '\0' && pwd
->pw_passwd
[0] == '\0') {
if(strcmp(grp
->gr_passwd
, crypt(getpass("Password:"),grp
->gr_passwd
)) != 0) {
if(setgid(grp
->gr_gid
) < 0)
execl("/bin/sh", "sh", 0);