+char *rfc822timestamp(void)
+/* return a timestamp in RFC822 form */
+{
+ time_t now;
+ static char buf[50];
+
+ time(&now);
+#ifdef HAVE_STRFTIME
+ /*
+ * Conform to RFC822. We generate a 4-digit year here, avoiding
+ * Y2K hassles. Max length of this timestamp in an English locale
+ * should be 29 chars. The only things that should vary by locale
+ * are the day and month abbreviations. The set_locale calls prevent
+ * weird multibyte i18n characters (such as kanji) from showing up
+ * in your Received headers.
+ */
+#if defined(HAVE_SETLOCALE) && defined(ENABLE_NLS)
+ setlocale (LC_TIME, "C");
+#endif
+ strftime(buf, sizeof(buf)-1,
+ "%a, %d %b %Y %H:%M:%S XXXXX (%Z)", localtime(&now));
+#if defined(HAVE_SETLOCALE) && defined(ENABLE_NLS)
+ setlocale (LC_TIME, "");
+#endif
+ strncpy(strstr(buf, "XXXXX"), tzoffset(&now), 5);
+#else
+ /*
+ * This is really just a portability fallback, as the
+ * date format ctime(3) emits is not RFC822
+ * conformant.
+ */
+ strlcpy(buf, ctime(&now), sizeof(buf));
+ buf[strlen(buf)-1] = '\0'; /* remove trailing \n */
+#endif /* HAVE_STRFTIME */
+
+ return(buf);
+}
+
+const char *showproto(int proto)