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

  1. /* Copyright (c) 1979 Regents of the University of California */
  2. /*
  3.  * Print out the time to a human desirable
  4.  * accuracy.
  5.  *
  6.  * Author: Kurt Shoens (UCB) July 11, 1978
  7.  */
  8.  
  9. char *hourNames[] {
  10.     "midnight",
  11.     "one",
  12.     "two",
  13.     "three",
  14.     "four",
  15.     "five",
  16.     "six",
  17.     "seven",
  18.     "eight",
  19.     "nine",
  20.     "ten",
  21.     "eleven",
  22.     "noon",
  23.     0
  24. };
  25.  
  26. char *quadrants[] {
  27.     "o' clock",
  28.     "quarter past",
  29.     "half past",
  30.     "quarter 'til",
  31.     0
  32. };
  33.  
  34. main(argc, argv)
  35.     char **argv;
  36. {
  37.     int hour, *t, min, q, tv[2];
  38.     char *hs, *qs;
  39.  
  40.     time(tv);
  41.     t = localtime(tv);
  42.     hour = t[2];
  43.     min = t[1];
  44.     if (argc >= 3) {
  45.         hour = atoi(argv[1]);
  46.         min = atoi(argv[2]);
  47.     }
  48.     q = (min+8) / 15;
  49.     if (q >= 4) {
  50.         q = 0;
  51.         hour++;
  52.     }
  53.     if (q > 2)
  54.         hour++;
  55.     if (hour >= 24)
  56.         hour = 0;
  57.     if (hour > 12)
  58.         hour =- 12;
  59.     hs = hourNames[hour];
  60.     qs = quadrants[q];
  61.     if ((hour == 12 || hour == 0) && q == 0) {
  62.         *hs = raise(*hs);
  63.         printf("%s\n", hs);
  64.         exit(0);
  65.     }
  66.     if (q == 0) {
  67.         *hs = raise(*hs);
  68.         printf("%s %s\n", hs, qs);
  69.         exit(0);
  70.     }
  71.     *qs = raise(*qs);
  72.     printf("%s %s\n", qs, hs);
  73.     exit(0);
  74. }
  75.  
  76. /*
  77.  * Return the upper case version of the possibly
  78.  * lower case letter.
  79.  */
  80.  
  81. raise(c)
  82. {
  83.     if (c >= 'a' && c <= 'z')
  84.         c =+ 'A' - 'a';
  85.     return(c);
  86. }
  87.