home *** CD-ROM | disk | FTP | other *** search
/ minnie.tuhs.org / unixen.tar / unixen / PDP-11 / Distributions / ucb / spencer_2bsd.tar.gz / 2bsd.tar / src / tod.c < prev    next >
C/C++ Source or Header  |  1980-02-17  |  1KB  |  76 lines

  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. }
  76.