* Copyright (c) 1980, 1988 Regents of the University of California.
* Redistribution and use in source and binary forms are permitted
* provided that the above copyright notice and this paragraph are
* duplicated in all such forms and that any documentation,
* advertising materials, and other materials related to such
* distribution and use acknowledge that the software was developed
* by the University of California, Berkeley. The name of the
* University may not be used to endorse or promote products derived
* from this software without specific prior written permission.
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
"@(#) Copyright (c) 1980, 1988 Regents of the University of California.\n\
static char sccsid
[] = "@(#)leave.c 5.4 (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");