public domain version of lock
Toby Harness
toby at gargoyle.UChicago.UUCP
Wed Jan 16 06:11:58 AEST 1985
# Included below is a different, perhaps improved, public domain
# version of "lock".
#
#
# Toby Harness Ogburn/Stouffer Center, University of Chicago
# ...ihnp4!gargoyle!toby
#
# This is a shell archive. Use sh, not csh, to unbundle.
echo Contents:
echo '-rw-r--r-- 1 toby 1104 Jan 15 12:42 lock.c'
echo '-rw-r--r-- 1 toby 445 Jan 15 13:06 lock.l'
echo Extracting:
sed 's/^X//' >lock.c <<'NOT_A_CUTE_SAYING-lock.c'
X/*
X * lock.c - lock a tty until owner returns
X *
X * cc lock.c -O -s -o lock
X *
X * Toby Harness 3/18/84
X */
X
X#include <stdio.h>
X#include <signal.h>
X#include <pwd.h>
X
X#define MASTER "lock"
X
Xextern char *crypt(), *getpass();
Xextern struct passwd *getpwuid(), *getpwnam();
X
Xmain(argc, argv)
Xint argc;
Xchar **argv;
X{
X register int i;
X char salt[3], MasterSalt[3], *in_string;
X struct passwd *pw, *Masterpw;
X
X if((pw = getpwuid(getuid())) == NULL) {
X fprintf(stderr, "%s: Who are you?\n", *argv);
X exit(1);
X }
X if((Masterpw = getpwnam(MASTER)) == NULL) {
X fprintf(stderr, "%s: can`t find passwd entry for %s\n",
X *argv, MASTER);
X exit(1);
X }
X
X while(i < 19)
X signal(i++, SIG_IGN);
X
X in_string = getpass("LOCKED\nPassword: ");
X
X strncpy(salt, pw->pw_passwd, 2);
X strncpy(MasterSalt, Masterpw->pw_passwd, 2);
X
X for (;;) {
X if(*in_string &&
X (!strcmp(pw->pw_passwd, crypt(in_string, salt)) ||
X !strcmp(Masterpw->pw_passwd, crypt(in_string, MasterSalt))))
X break;
X in_string = getpass("Password: ");
X }
X}
NOT_A_CUTE_SAYING-lock.c
ls -l lock.c
sed 's/^X//' >lock.l <<'NOT_A_CUTE_SAYING-lock.l'
X.TH LOCK Local
X.SH NAME
Xlock \- reserve a terminal
X.SH SYNOPSIS
X.B lock
X.SH DESCRIPTION
X.I Lock
Xprints "LOCKED" on
Xthe screen and refuses to relinquish the terminal until
Xthe user`s (login) password is entered. The user can also
Xlogin elsewhere to kill the lock process.
X.PP
XThere exists a system master password associated with the pseudo-user
X"lock" that also may be used to unlock the terminal.
X.SH AUTHOR
XToby Harness
X.SH FILES
X/etc/passwd
NOT_A_CUTE_SAYING-lock.l
ls -l lock.l
exit 0
More information about the Comp.sources.unix
mailing list