Commit | Line | Data |
---|---|---|
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 | ||
14 | struct 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 | ||
33 | struct 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 | ||
43 | main(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 | } |