/*
Copyright (C) 1991, Marcus J. Ranum. All rights reserved.
*/
#ifndef lint
static char RCSid[] = "$Header: /home/mjr/hacks/umud/CMD/RCS/passwd.c,v 1.3 91/10/28 21:34:56 mjr Exp $";
#endif
/* configure all options BEFORE including system stuff. */
#include "config.h"
#include "mud.h"
#include "match.h"
#include "vars.h"
/*
set passwords
*/
/* ARGSUSED */
cmd_password(argc,argv,who,aswho)
int argc;
char *argv[];
char *who;
char *aswho;
{
char pbuf[MAXOID];
int wiz;
char *opw;
if((wiz = ut_flagged(aswho,var_wiz)) == 0 && !ut_isobjown(aswho,who)) {
say(who,"not owner.\n",(char *)0);
return(1);
}
if((opw = ut_getatt(who,0,typ_str,var_pass,(char *)0)) == (char *)0)
return(0);
/* if there is already no password, farg it */
if(*opw != '\0' && !wiz) {
rot_init(who);
rot_decode(opw,pbuf);
if(strcmp(argv[1],pbuf)) {
say(who,"bad password.\n",(char *)0);
return(1);
}
}
if(strlen(argv[2]) < 6) {
say(who,"passwords must be longer than 6 characters.\n",(char *)0);
return(1);
}
if(ut_setpass(who,argv[2])) {
say(who,"cannot set password.\n",(char *)0);
return(1);
}
say(who,"set password.\n",(char *)0);
return(0);
}
/* ARGSUSED */
cmd__password(argc,argv,who,aswho)
int argc;
char *argv[];
char *who;
char *aswho;
{
char ob[MAXOID];
if(matchlocal(who,argv[1],ut_loc(who),MTCH_UNIQ|MTCH_MEOK|MTCH_NONLOC,ob))
return(1);
if(ut_setpass(ob,argv[2])) {
say(who,"cannot set password.\n",(char *)0);
return(1);
}
return(0);
}