BSD 2 development
[unix-history] / src / tod.c
/* Copyright (c) 1979 Regents of the University of California */
/*
* Print out a meaningful phrase depending on the time of
* day.
*
* Author: Robert Toxen (UCB) 7/10/78
*/
/*
* The following structure parameterizes the
* whole she-bang.
*/
struct daytime {
int d_start; /* starting hour */
char *d_mesg; /* applicable message */
} daytime[] {
0, "It's late",
4, "You really should be home in bed",
7, "Good morning",
12, "Good afternoon",
18, "Good evening",
22, "Good night",
50, "panic: time of day bug",
-1, 0
};
/*
* The special case structure: if the hour is exactly
* one of these, print the corresponding message.
*/
struct special {
int s_time; /* Applicable hour */
char *s_mesg; /* Corresponding mesg */
} special[] {
12, "Had lunch yet?",
17, "You should be eating dinner",
0, "It's past midnight",
-1, 0
};
main(argc, argv)
char **argv;
{
register struct daytime *dp;
register struct special *sp;
register int hour;
int tv[2], *t;
if (argc > 1)
hour = atoi(argv[1]);
else {
time(tv);
t = localtime(tv);
hour = t[2];
}
for (sp = &special[0]; sp->s_time != -1; sp++)
if (sp->s_time == hour) {
printf("%s\n", sp->s_mesg);
exit(1);
}
for (dp = &daytime[0]; dp->d_start != -1; dp++)
if (hour < (dp+1)->d_start) {
printf("%s\n", dp->d_mesg);
exit(0);
}
/*
* Why didn't this thing print anything !?!
*/
printf("No message for time!?!\n");
abort();
}