Convert to the use of siglongjmp()
[mmh] / sbr / fmt_scan.c
index 5240781..89023cb 100644 (file)
@@ -5,6 +5,9 @@
  * This code is Copyright (c) 2002, by the authors of nmh.  See the
  * COPYRIGHT file in the root directory of the nmh distribution for
  * complete copyright information.
+ *
+ * This is the engine that processes the format instructions created by
+ * fmt_compile (found in fmt_compile.c).
  */
 
 #include <h/mh.h>
@@ -30,7 +33,8 @@ struct msgs *fmt_current_folder; /* current folder (set by main program) */
 #endif
 
 extern int fmt_norm;           /* defined in sbr/fmt_def.c = AD_NAME */
-struct mailname fmt_mnull;
+struct mailname fmt_mnull = { NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0,
+                             NULL, NULL };
 
 /*
  * static prototypes
@@ -152,7 +156,10 @@ cptrimmed(char **dest, char *str, unsigned int wid, char fill, size_t n) {
                sp += char_len;
 #else
            end--;
-           if (iscntrl(*sp) || isspace(*sp)) {
+            /* isnctrl(), etc., take an int argument.  Cygwin's ctype.h
+               intentionally warns if they are passed a char. */
+            int c = *sp;
+           if (iscntrl(c) || isspace(c)) {
                sp++;
 #endif
                if (!prevCtrl) {
@@ -505,13 +512,13 @@ fmt_scan (struct format *format, char *scanl, int width, int *dat)
                            ljust++;
                    }
 
-                   if (!ljust && i > 0 && strlen(str) > i)
+                   if (!ljust && i > 0 && (int) strlen(str) > i)
                            str[i] = '\0';
                    xp = str;
                    xp += strlen(str) - 1;
                    while (xp > str && isspace(*xp))
                            *xp-- = '\0';
-                   if (ljust && i > 0 && strlen(str) > i)
+                   if (ljust && i > 0 && (int) strlen(str) > i)
                        str += strlen(str) - i;
            }
            break;