Date: Wed, 4 Sep 1996 22:18:08 -0700 (PDT) From: "David E. O'Brien" <obrien@Nuxi.cs.ucdavis.edu> To: FreeBSD-gnats-submit@freebsd.org Cc: obrien@Nuxi.com Subject: bin/1567: useful option to /usr/bin/lock Message-ID: <199609050518.WAA21759@relay.nuxi.com> Resent-Message-ID: <199609050520.WAA22475@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
>Number: 1567 >Category: bin >Synopsis: /usr/bin/lock cannot lock terminal indefinately >Confidential: no >Severity: non-critical >Priority: low >Responsible: freebsd-bugs >State: open >Class: change-request >Submitter-Id: current-users >Arrival-Date: Wed Sep 4 22:20:01 PDT 1996 >Last-Modified: >Originator: David E. O'Brien >Organization: University of California, Davis >Release: FreeBSD 2.1.5-RELEASE i386 >Environment: Nothing special >Description: /usr/bin/lock can be used to lock a terminal much like xlock does for your X-windows session. Problem is, /usr/bin/lock cannot lock your terminal indefinately. Rather you must specify a timeout value, after which, your terminal is unlocked and become unsecured. I have added a ``-n'' no timeout option to /usr/bin/lock Currently the only way to get this functionality is to use a huge timeout value and hope it is long enought (in time). This method also requires you to know the maxium number of minutes you are allowed to specify. >How-To-Repeat: /usr/bin/lock You terminal will become unsecured in 15 mintues (by default). >Fix: --- lock.c.orig Fri May 27 05:32:03 1994 +++ lock.c Sat Aug 3 17:59:26 1996 @@ -70,6 +70,7 @@ struct timeval zerotime; struct sgttyb tty, ntty; long nexttime; /* keep the timeout time */ +int no_timeout; /* lock terminal forever */ /*ARGSUSED*/ main(argc, argv) @@ -90,7 +91,8 @@ sectimeout = TIMEOUT; mypw = NULL; usemine = 0; - while ((ch = getopt(argc, argv, "pt:")) != EOF) + no_timeout = 0; + while ((ch = getopt(argc, argv, "npt:")) != EOF) switch((char)ch) { case 't': if ((sectimeout = atoi(optarg)) <= 0) { @@ -108,10 +110,13 @@ } mypw = strdup(pw->pw_passwd); break; + case 'n': + no_timeout = 1; + break; case '?': default: (void)fprintf(stderr, - "usage: lock [-p] [-t timeout]\n"); + "usage: lock [-n] [-p] [-t timeout]\n"); exit(1); } timeout.tv_sec = sectimeout * 60; @@ -169,11 +174,17 @@ ntimer.it_interval = zerotime; ntimer.it_value = timeout; - setitimer(ITIMER_REAL, &ntimer, &otimer); + if (!no_timeout) + setitimer(ITIMER_REAL, &ntimer, &otimer); /* header info */ + if (no_timeout) { +(void)printf("lock: %s on %s. no timeout\ntime now is %.20s%s%s", + ttynam, hostname, ap, tzn, ap + 19); + } else { (void)printf("lock: %s on %s. timeout in %d minutes\ntime now is %.20s%s%s", ttynam, hostname, sectimeout, ap, tzn, ap + 19); + } for (;;) { (void)printf("Key: "); @@ -201,9 +212,16 @@ { struct timeval timval; - if (!gettimeofday(&timval, (struct timezone *)NULL)) -(void)printf("lock: type in the unlock key. timeout in %ld:%ld minutes\n", - (nexttime - timval.tv_sec) / 60, (nexttime - timval.tv_sec) % 60); + if (!gettimeofday(&timval, (struct timezone *)NULL)) { + (void)printf("lock: type in the unlock key. "); + if (no_timeout) { + (void)putchar('\n'); + } else { + (void)printf("timeout in %ld:%ld minutes\n", + (nexttime - timval.tv_sec) / 60, + (nexttime - timval.tv_sec) % 60); + } + } } void @@ -217,7 +235,9 @@ void bye() { - (void)ioctl(0, TIOCSETP, &tty); - (void)printf("lock: timeout\n"); - exit(1); + if (!no_timeout) { + (void)ioctl(0, TIOCSETP, &tty); + (void)printf("lock: timeout\n"); + exit(1); + } } --- lock.1.orig Fri May 27 05:32:03 1994 +++ lock.1 Wed Sep 4 22:11:13 1996 @@ -39,6 +39,7 @@ .Nd reserve a terminal .Sh SYNOPSIS .Nm lock +.Op Fl n .Op Fl p .Op Fl t Ar timeout .Sh DESCRIPTION @@ -53,6 +54,8 @@ Options: .Pp .Bl -tag -width Fl +.It Fl n +Don't use a timeout value. Terminal will be locked forever. .It Fl p A password is not requested, instead the user's current login password is used. >Audit-Trail: >Unformatted:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199609050518.WAA21759>