]> diplodocus.org Git - nmh/blobdiff - sbr/message_id.c
crawl_folders.h: Rename to be alongside implementation.
[nmh] / sbr / message_id.c
index aaaab322efbca4870da1023bc5b41ae68bb33ea3..1e29051d9a3917a004fab76f410dc312b3d1eb2e 100644 (file)
@@ -6,10 +6,12 @@
  * complete copyright information.
  */
 
-#include <h/mh.h>
+#include "h/mh.h"
+#include "h/mts.h"
 #include "m_rand.h"
 #include "message_id.h"
-#include <sys/time.h>  /* for gettimeofday() */
+#include <sys/time.h>
+#include "base64.h"
 
 
 static enum {
@@ -21,7 +23,8 @@ static char message_id_[BUFSIZ];
 
 /* Convert name of message id style to integer value and store it. */
 int
-save_message_id_style (const char *value) {
+save_message_id_style (const char *value)
+{
   if (! strcasecmp (value, "localname")) {
     message_id_style = NMH_MESSAGE_ID_LOCALNAME;
     return 0;
@@ -35,21 +38,23 @@ save_message_id_style (const char *value) {
 
 
 char *
-message_id (time_t tclock, int content_id) {
+message_id (time_t tclock, int content_id)
+{
   switch (message_id_style) {
     case NMH_MESSAGE_ID_LOCALNAME: {
-      char *format = content_id  ?  "<%d.%ld.%%d@%s>"  :  "<%d.%ld@%s>";
-
-      snprintf (message_id_, sizeof message_id_, format,
-                (int) getpid (), (long) tclock, LocalName (1));
-
+#define P(fmt) \
+    snprintf(message_id_, sizeof message_id_, \
+        (fmt), (int)getpid(), (long)tclock, LocalName(1))
+
+            if (content_id)
+                P("<%d.%ld.%%d@%s>");
+            else
+                P("<%d.%ld@%s>");
+#undef P
       break;
     }
 
     case NMH_MESSAGE_ID_RANDOM: {
-      char *format = content_id
-        ?  "<%d-%ld.%06ld%%d@%.*s.%.*s.%.*s>"
-        :  "<%d-%ld.%06ld@%.*s.%.*s.%.*s>";
       /* Use a sequence of digits divisible by 3 because that will
          expand to base64 without any waste.  Must be shorter than 58,
          see below. */
@@ -95,11 +100,18 @@ message_id (time_t tclock, int content_id) {
         /* The format string inserts a couple of dots, for the benefit
            of spam filters that want to see a message id with a final
            part that resembles a hostname. */
-        snprintf (message_id_, sizeof message_id_, format,
-                  getpid (), (long) now.tv_sec, (long) now.tv_usec,
-                  one_third, rnd_base64,
-                  one_third, &rnd_base64[one_third],
-                  one_third, &rnd_base64[2*one_third]);
+#define P(fmt) \
+    snprintf(message_id_, sizeof message_id_, (fmt), \
+        getpid(), (long)now.tv_sec, (long)now.tv_usec, \
+        (int)one_third, rnd_base64, \
+        (int)one_third, &rnd_base64[one_third], \
+        (int)one_third, &rnd_base64[2*one_third])
+
+            if (content_id)
+                P("<%d-%ld.%06ld%%d@%.*s.%.*s.%.*s>");
+            else
+                P("<%d-%ld.%06ld@%.*s.%.*s.%.*s>");
+#undef P
       }
 
       break;