* Copyright (c) 1980, 1988, 1993
* The Regents of the University of California. All rights reserved.
* %sccs.include.redist.c%
static char copyright
[] =
"@(#) Copyright (c) 1980, 1988, 1993\n\
The Regents of the University of California. All rights reserved.\n";
static char sccsid
[] = "@(#)leave.c 8.1 (Berkeley) %G%";
* Reminds you when you have to leave.
* Leave prompts for input and goes away if you hit return.
* It nags you like a mother hen.
register int hours
, minutes
;
struct tm
*t
, *localtime();
#define MSG1 "When do you have to leave? "
(void)write(1, MSG1
, sizeof(MSG1
) - 1);
cp
= fgets(buf
, sizeof(buf
), stdin
);
for (hours
= 0; (c
= *cp
) && c
!= '\n'; ++cp
) {
hours
= hours
* 10 + (c
- '0');
if (minutes
< 0 || minutes
> 59)
secs
= hours
* 60 * 60 + minutes
* 60;
if (hours
> 23 || t
->tm_hour
> hours
||
t
->tm_hour
== hours
&& minutes
<= t
->tm_min
)
secs
= (hours
- t
->tm_hour
) * 60 * 60;
secs
+= (minutes
- t
->tm_min
) * 60;
printf("Alarm set for %.16s. (pid %d)\n",
sleep((u_int
)2); /* let parent print set message */
* if write fails, we've lost the terminal through someone else
* causing a vhangup by logging in.
#define MSG2 "\07\07You have to leave in 5 minutes.\n"
if (write(1, MSG2
, sizeof(MSG2
) - 1) != sizeof(MSG2
) - 1)
#define MSG3 "\07\07Just one more minute!\n"
if (write(1, MSG3
, sizeof(MSG3
) - 1) != sizeof(MSG3
) - 1)
#define MSG4 "\07\07Time to leave!\n"
for (bother
= 10; bother
--;) {
if (write(1, MSG4
, sizeof(MSG4
) - 1) != sizeof(MSG4
) - 1)
#define MSG5 "\07\07That was the last time I'll tell you. Bye.\n"
(void)write(1, MSG5
, sizeof(MSG5
) - 1);
fprintf(stderr
, "usage: leave [[+]hhmm]\n");