+const unsigned short int __mon_lengths[2][12] =
+ {
+ /* Normal years. */
+ { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 },
+ /* Leap years. */
+ { 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }
+ };
+
+
+static int times_through_search; /* This library routine should never
+ hang -- make sure we always return
+ when we're searching for a value */
+
+/* After testing this, the maximum number of iterations that I had on
+ any number that I tried was 3! Not bad.
+
+ mktime converts a `struct tm' (broken-down local time) into a `time_t';
+ it is the opposite of localtime. It is possible to put the following
+ values out of range and have mktime compensate: tm_sec, tm_min, tm_hour,
+ tm_mday, tm_year. The other values in the structure are ignored. */
+
+#ifdef DEBUG
+
+#include <stdio.h>
+#include <ctype.h>
+
+int debugging_enabled = 0;
+
+/* Print the values in a `struct tm'. */
+static void
+printtm (it)
+ struct tm *it;