]> granicus.if.org Git - mutt/commitdiff
Fix compiler type warnings. (closes #3765)
authorKevin McCarthy <kevin@8t8.us>
Thu, 23 Jul 2015 21:57:04 +0000 (14:57 -0700)
committerKevin McCarthy <kevin@8t8.us>
Thu, 23 Jul 2015 21:57:04 +0000 (14:57 -0700)
The output of mutt_local_tz() was being passed to abs().  Technically
the return type is time_t, but it represents a small value: the timezone
offset in seconds.  Add a safe explicit cast to int.

Change the txt parameter of mutt_make_help() to type const char *.
Typically all calls run the txt parameter through _(), which
accepts const char * and returns a char *. However, if NLS is not
enabled, _() is a noop, simply returning the parameter itself.  In
mutt_compile_help(), items[i].name is const char *, so it will generate
a warning when passed as the txt parameter of mutt_make_help().

On some systems, e.g. OS X, snprintf is defined as a macro.  One call
in hcache.c was embedding directives inside the snprintf call.  This is
apparently undefined behavior, so duplicate the call instead.

hcache.c
help.c
imap/util.c
protos.h
sendlib.c

index 51f2f1a84ac49b75defa5e324225678995488e05..561dce3adc8f9c653af48b81fd8fbb2858d515c5 100644 (file)
--- a/hcache.c
+++ b/hcache.c
@@ -550,21 +550,33 @@ mutt_hcache_per_folder(const char *path, const char *folder,
   {
     md5_buffer (folder, strlen (folder), &md5sum);
 
+    /* On some systems (e.g. OS X), snprintf is defined as a macro.
+     * Embedding directives inside macros is undefined, so we have to duplicate
+     * the whole call:
+     */
+#ifndef HAVE_ICONV
     ret = snprintf(hcpath, _POSIX_PATH_MAX,
                    "%s/%02x%02x%02x%02x%02x%02x%02x%02x"
                    "%02x%02x%02x%02x%02x%02x%02x%02x"
-#ifndef HAVE_ICONV
                   "-%s"
-#endif
                   ,
                   path, md5sum[0], md5sum[1], md5sum[2], md5sum[3],
                    md5sum[4], md5sum[5], md5sum[6], md5sum[7], md5sum[8],
                    md5sum[9], md5sum[10], md5sum[11], md5sum[12],
                    md5sum[13], md5sum[14], md5sum[15]
-#ifndef HAVE_ICONV
                   ,chs
-#endif
                   );
+#else
+    ret = snprintf(hcpath, _POSIX_PATH_MAX,
+                   "%s/%02x%02x%02x%02x%02x%02x%02x%02x"
+                   "%02x%02x%02x%02x%02x%02x%02x%02x"
+                  ,
+                  path, md5sum[0], md5sum[1], md5sum[2], md5sum[3],
+                   md5sum[4], md5sum[5], md5sum[6], md5sum[7], md5sum[8],
+                   md5sum[9], md5sum[10], md5sum[11], md5sum[12],
+                   md5sum[13], md5sum[14], md5sum[15]
+                  );
+#endif
   }
   
   if (ret <= 0)
diff --git a/help.c b/help.c
index 8afabf03a3a667b1892b0c806dffc38831d15df5..c80427437a682faee8d77f1f601f590f20bd8217 100644 (file)
--- a/help.c
+++ b/help.c
@@ -54,7 +54,7 @@ static const struct binding_t *help_lookupFunction (int op, int menu)
   return (NULL);
 }
 
-void mutt_make_help (char *d, size_t dlen, char *txt, int menu, int op)
+void mutt_make_help (char *d, size_t dlen, const char *txt, int menu, int op)
 {
   char buf[SHORT_STRING];
 
index 6295c5ff43e1133e748cbb7b87047bffedf1f421..c05465a3e8ff9ed238672eee02bdbc76bfc465f2 100644 (file)
@@ -591,7 +591,7 @@ void imap_make_date (char *buf, time_t timestamp)
   snprintf (buf, IMAP_DATELEN, "%02d-%s-%d %02d:%02d:%02d %+03d%02d",
       tm->tm_mday, Months[tm->tm_mon], tm->tm_year + 1900,
       tm->tm_hour, tm->tm_min, tm->tm_sec,
-      (int) tz / 60, (int) abs (tz) % 60);
+      (int) tz / 60, (int) abs ((int) tz) % 60);
 }
 
 /* imap_qualify_path: make an absolute IMAP folder target, given IMAP_MBOX
index d232a4f6e1b7fe8d2ea2991c8521f14654bde363..fd898d6f72a8e384fd59a2d97ff8dd7f202c1a7a 100644 (file)
--- a/protos.h
+++ b/protos.h
@@ -213,7 +213,7 @@ void mutt_draw_tree (CONTEXT *);
 void mutt_check_lookup_list (BODY *, char *, int);
 void mutt_make_attribution (CONTEXT *ctx, HEADER *cur, FILE *out);
 void mutt_make_forward_subject (ENVELOPE *env, CONTEXT *ctx, HEADER *cur);
-void mutt_make_help (char *, size_t, char *, int, int);
+void mutt_make_help (char *, size_t, const char *, int, int);
 void mutt_make_misc_reply_headers (ENVELOPE *env, CONTEXT *ctx, HEADER *cur, ENVELOPE *curenv);
 void mutt_make_post_indent (CONTEXT *ctx, HEADER *cur, FILE *out);
 void mutt_merge_envelopes(ENVELOPE* base, ENVELOPE** extra);
index a3454163c37154e07fafc12c3cc7f029a4def683..a74874d1312f03f45e606fb57a62aa4f86be5605 100644 (file)
--- a/sendlib.c
+++ b/sendlib.c
@@ -1486,7 +1486,7 @@ char *mutt_make_date (char *s, size_t len)
   snprintf (s, len,  "Date: %s, %d %s %d %02d:%02d:%02d %+03d%02d\n",
            Weekdays[l->tm_wday], l->tm_mday, Months[l->tm_mon],
            l->tm_year + 1900, l->tm_hour, l->tm_min, l->tm_sec,
-           (int) tz / 60, (int) abs (tz) % 60);
+           (int) tz / 60, (int) abs ((int) tz) % 60);
   return (s);
 }