|
|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T l
Length: 3482 (0xd9a)
Types: TextFile
Names: »libmain.c«
└─⟦4f9d7c866⟧ Bits:30007245 EUUGD6: Sikkerheds distributionen
└─⟦123909933⟧ »./npasswd/npasswd.tar.Z«
└─⟦22a202e7d⟧
└─⟦this⟧ »npass-new/npasswd_jpl/old.checkpasswd/libmain.c«
/* -------------------------------------------------------------------- */
/* */
/* Author: Clyde Hoover */
/* Computation Center */
/* The University of Texas at Austin */
/* Austin, Texas 78712 */
/* clyde@emx.utexas.edu */
/* uunet!cs.utexas.edu!ut-emx!clyde */
/* */
/*This code may be distributed freely, provided this notice is retained. */
/* */
/* -------------------------------------------------------------------- */
/*
* checkpasswd - Library version main routine
*
* Compilation: ld -r -o checkpasswd.o checkpasswd.o libmain.o
* pwck_dict.o pwck_passwd.o pwck_lexical.o pwck_local.o util.o
*/
#ifndef lint
static char sccsid[] = "@(#)libmain.c 1.2 11/14/89 (cc.utexas.edu)";
#endif
#include "checkpasswd.h"
#include <varargs.h>
static char *replies[] = {
0, /* PWCK_OK */
"Empty password", /* PWCK_NULL */
"This password is too easy to guess", /* PWCK_OBVIOUS */
"This password is part of your 'finger' information", /* PWCK_FINGER */
"This password was found in a dictionary", /* PWCK_INDICT */
"This password has an illegal character in it", /* PWCK_ILLCHAR */
"This password is too short", /* PWCK_SHORT */
0
};
#define NREPLIES 7 /* Number of messages in replies */
static char elucidate[BUFSIZ]; /* Expanded error message */
static char *configfile = CONFIG_FILE; /* Configuration file */
static char configured = 0; /* Has cf been read? */
static int silent = 0; /* Don't print messages */
returncode = 0; /* Return PWCK return code */
int standalone = 0; /* Not a standalone application */
/*
* setcheckpasswd - set parameters for checkpasswd
*
* e.g setcheckpasswd("-c", <configfile>, "-e", "-s", 0);
*/
setcheckpasswd(va_alist)
va_dcl /* List of options */
{
va_list optlist;
char *optx;
va_start(optlist);
while (optx = va_arg(optlist, char *)) {
if (*optx == '-') {
switch(*++optx) {
case 's': /* -s (silent) */
silent = 1;
break;
case 'e': /* -e (return error code) */
returncode = 1;
break;
case 'c': /* -c config-file */
if (*++optx)
configfile = optx;
else {
optx = va_arg(optlist, char *);
if (optx)
configfile = optx;
}
break;
}
}
}
va_end(optlist);
}
/*
* checkpasswd - check password candidate
*
* Returns 1 if <pwd> is ok to use as a password
* 0 if not & an appropriate error message is issued
*/
checkpasswd(uid, pwd)
int uid; /* User who wants this password */
char *pwd; /* Password they want */
{
int rc; /* Return code */
#ifdef DEBUG
printf("checkpasswd %d %s\n", uid, pwd);
#endif
if (!configured) {
readconfig(configfile);
configured++;
}
rc = checkpassword(pwd, uid, elucidate);
if (rc == PWCK_OK) /* Always silent on success */
return(returncode ? rc : 1);
if (silent)
return(returncode ? rc : 0);
if (rc <= NREPLIES) {
if (elucidate[0])
printf("%s.\n", elucidate);
else if (replies[rc])
printf("%s.\n", replies[rc]);
else
putchar('\n');
}
return(returncode ? rc : 0);
}
/* End libmain.c */