#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/security.h>
#include <prot.h>

// By Bobby Acha (bobby@du.edu)
// University of Denver


struct es_passwd	*prpw;

/***************************************************************************/

void callerid (void)
{
	if (getuid() != 0)
	{
	  fprintf (stderr,"You must be root to use this program!\n");
	  exit(1);
	}
}

/***************************************************************************/

void usage (char *prog_name)
{
	fprintf (stderr,"Usage is %s [username]\n", prog_name);
	exit(2);
}


/*************************************************************************/

void passlife (char username[])

{
	if (getespwnam(username)==NULL)
		{
		fprintf(stderr,"Error!! User with the name \"%s\" does not exist\n",username);
		exit(3);
		}
	else
		{
		prpw = copyespwent (getespwnam(username));
		}
	if ((prpw->ufld->fd_uid < 1024)||(prpw->ufld->fd_expire == 1)||(prpw->ufld->fd_lifetime == 1))
		{
		fprintf(stderr,"Error!! That action is not permitted with this user!!\n");
		exit(4);
		}	

	prpw->ufld->fd_schange = 0;
	prpw->uflg->fg_schange = 1;

	if (putespwnam (username, prpw) == 0)
	{
	  fprintf (stderr,"ES Error auth.db was not updated\n");
	  exit(5);
	}
	else
	{
	  fprintf (stdout,"Success\n");
	}	
}

/************************************************************************/

main (int argc, char *argv[])
{
	if (argv[1] == NULL)
	{
	usage(argv[0]);
	}

	callerid ();
	set_auth_parameters (argc, argv);
	passlife (argv[1]);


}


