|
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 m
Length: 3839 (0xeff) Types: TextFile Names: »main.c«
└─⟦4f9d7c866⟧ Bits:30007245 EUUGD6: Sikkerheds distributionen └─⟦123909933⟧ »./npasswd/npasswd.tar.Z« └─⟦22a202e7d⟧ └─⟦this⟧ »npass-new/npasswd_jpl/old.checkpasswd/main.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 - Main program for standalone version * libmain.c is the driver for the library version * * Compilation: cc -o checkpasswd checkpasswd.c main.c pwck_dict.c * pwck_passwd.c pwck_lexical.c pwck_local.c util.c */ #ifndef lint static char sccsid[] = "@(#)main.c 1.2 11/14/89 (cc.utexas.edu) /usr/src/ut/bin/passwd/checkpasswd/SCCS/s.main.c"; #endif #include "checkpasswd.h" #include "version.h" char *replies[] = { "This password is ok for use", /* 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 */ char elucidate[BUFSIZ]; /* Expanded error message */ int silent = 0, /* Silent mode switch */ oneshot = 0, /* Check only one password switch */ errornum = 0; /* Print error number with message */ int standalone = 1; /* Running as standalone application */ main(argc, argv) int argc; char **argv; { int uid = getuid(), /* Invoker's uid */ opt, /* Argument parser */ interactive = 0; /* In interactive mode? */ char *configfile = CONFIG_FILE; /* Configuration file */ extern char *optarg; /* From getopt() */ /* Process argument list */ while ((opt = getopt(argc, argv, "c:eosu:V?")) != EOF) { switch (opt) { case 'c': /* -c config-file */ configfile = optarg; break; case 'e': /* -e [print status number] */ errornum++; break; case 'o': /* -o [check one password & quit] */ oneshot++; break; case 's': /* -s [silent mode] */ silent++; break; case 'u': /* -u [user id] */ if (uid == 0 && isdigit(*optarg)) uid = atoi(optarg); break; case 'V': /* -V [print version information] */ printf("Version %s\nPatch level %s\n", version, patchlevel); break; case '?': printf("Usage: checkpasswd [-c config] [-e] [-o] [-s] [-V] [-u uid]\n"); exit(0); } } (void) readconfig(configfile); interactive = isatty(fileno(stdin)); for (;;) { int rc; /* Return code from checkpasswd() */ char ibuf[BUFSIZ]; /* Input buffer */ char *nl; /* Newline postition */ if (interactive) { printf("Password to check: "); fflush(stdout); } if (fgets(ibuf, sizeof(ibuf), stdin) == NULL) break; if (nl = index(ibuf, '\n')) *nl = 0; if (ibuf[0] == 0) continue; rc = checkpassword(ibuf, uid, elucidate); if (!silent) { if (errornum) printf("%d ", rc); if (rc <= NREPLIES) { if (elucidate[0]) printf("%s.\n", elucidate); else if (replies[rc]) printf("%s.\n", replies[rc]); else putchar('\n'); } else printf("Error %d\n", rc); } if (oneshot) exit(rc); } exit(0); } /* End main.c */