BSD 2 development
[unix-history] / src / tod.c
CommitLineData
7fb8d929
RT
1/* Copyright (c) 1979 Regents of the University of California */
2/*
3 * Print out a meaningful phrase depending on the time of
4 * day.
5 *
6 * Author: Robert Toxen (UCB) 7/10/78
7 */
8
9/*
10 * The following structure parameterizes the
11 * whole she-bang.
12 */
13
14struct daytime {
15 int d_start; /* starting hour */
16 char *d_mesg; /* applicable message */
17} daytime[] {
18 0, "It's late",
19 4, "You really should be home in bed",
20 7, "Good morning",
21 12, "Good afternoon",
22 18, "Good evening",
23 22, "Good night",
24 50, "panic: time of day bug",
25 -1, 0
26};
27
28/*
29 * The special case structure: if the hour is exactly
30 * one of these, print the corresponding message.
31 */
32
33struct special {
34 int s_time; /* Applicable hour */
35 char *s_mesg; /* Corresponding mesg */
36} special[] {
37 12, "Had lunch yet?",
38 17, "You should be eating dinner",
39 0, "It's past midnight",
40 -1, 0
41};
42
43main(argc, argv)
44 char **argv;
45{
46 register struct daytime *dp;
47 register struct special *sp;
48 register int hour;
49 int tv[2], *t;
50
51 if (argc > 1)
52 hour = atoi(argv[1]);
53 else {
54 time(tv);
55 t = localtime(tv);
56 hour = t[2];
57 }
58 for (sp = &special[0]; sp->s_time != -1; sp++)
59 if (sp->s_time == hour) {
60 printf("%s\n", sp->s_mesg);
61 exit(1);
62 }
63 for (dp = &daytime[0]; dp->d_start != -1; dp++)
64 if (hour < (dp+1)->d_start) {
65 printf("%s\n", dp->d_mesg);
66 exit(0);
67 }
68
69 /*
70 * Why didn't this thing print anything !?!
71 */
72
73 printf("No message for time!?!\n");
74 abort();
75}