AUSAM/source/S/initp.c

Compare this file to the similar file:
Show the results in this format:

/*
 *	program to set a users passwd to null, and set initial shell to
 *	/usr/logins/initsh, mostly used after a user has forgotten his passwd.
 *
 *		initp username1 [username2 .. usernamen]
 *
 *	Peter Ivanov, 22/7/79
 *
 */

#include	<local-system>
#include	<passwd.h>

struct pwent	pe;
char	buf[256];
char	is[]	"/usr/logins/initsh";

main(argc, argv)
register int	argc;
char	*argv[];
{
register	i;
register	size;

if(argc < 2) error("usage: initp  lname1 [lname2 .. lnamen]\n");

argc--;
argv++;

while(argc > 0)
	{
	pe.pw_strings[LNAME] = *argv;
	if((size = getpwuid(&pe, buf, sizeof buf)) == sizeof buf)
		error("buffer too small\n");

	if(size > 0)
		{
		/* got an entry, zap it */
		pe.pw_strings[SHELLPATH] = is;
		for(i=0; i < 8; pe.pw_pword[i++] = '\0');
		if(chngpwent(&pe)  != 1)
			error("cant change passwd file\n");
		}
	  else
		{
		/* no such person */
		prints(2,pe.pw_strings[LNAME]);
		prints(2," no such user!\n");
		}
	argc--;
	argv++;
	}
}

error(s)
char	*s;
{
prints(2,"zaptime: ");
prints(2,s);
exit(1);
}