#include <sys/types.h>
#include <stdio.h>
#include <sys/security.h>
#include <prot.h>
 
main (argc, argv)
int        argc;
char      *argv[];
{
   struct es_passwd  *acct;
   time_t expire_time;
   time_t expire_date;
 
   /*--- Standard initialization ---*/
 
   set_auth_parameters(argc, argv);
   initprivs();
 
   /*--- fetch account information using audit ID ---*/
 
   if ((acct = getespwuid(getluid())) == NULL)
      errmsg("Internal error");
 
  /*-- test if personal or system default applies and print --*/
 
   if (acct->uflg->fg_expire)
      expire_time = acct->ufld->fd_expire;
   else if (acct->sflg->fg_expire)
      expire_time = acct->sfld->fd_expire;
   else {
      audit_db_error(acct);     /* audit (externally defined) */
      errmsg("No user-specific or system default \
                                             expiration time.");
   }
 
   if (!acct->uflg->fg_schange) {
      audit_db_error(acct);      /* audit (externally defined) */
      errmsg("Account does not have successful change time");
   }
 
   expire_date = acct->ufld->fd_schange + expire_time;
 
   if (acct->uflg->fg_psw_chg_reqd && \
                 acct->ufld->fd_psw_chg_reqd) \
                          expire_date = time((time_t *) NULL);
 
   audit_action(acct->ufld->fd_name, expire_date);
   exit(0);
}
