Changed types and added casts so that build is clean with gcc -Wsign-compare.
[mmh] / sbr / fmt_scan.c
index ac98883..5103dbd 100644 (file)
@@ -4,6 +4,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>
 #include <h/tws.h>
 #include <h/fmt_compile.h>
 
-#ifdef TIME_WITH_SYS_TIME
+#ifdef HAVE_SYS_TIME_H
 # include <sys/time.h>
-# include <time.h>
-#else
-# ifdef TM_IN_SYS_TIME
-#  include <sys/time.h>
-# else
-#  include <time.h>
-# endif
 #endif
+#include <time.h>
+
 #ifdef MULTIBYTE_SUPPORT
 #  include <wctype.h>
 #  include <wchar.h>
 #endif
 
-#define NFMTS MAXARGS
-
 extern char *formataddr();  /* hook for custom address formatting */
 
-#ifdef LBL
-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;
 
@@ -57,32 +49,17 @@ match(char *str, char *sub)
        int c1, c2;
        char *s1, *s2;
 
-#ifdef LOCALE
-       while ((c1 = *sub)) {
-               c1 = (isalpha(c1) && isupper(c1)) ? tolower(c1) : c1;
-               while ((c2 = *str++) && c1 != ((isalpha(c2) && isupper(c2)) ? tolower(c2) : c2))
-                       ;
-               if (! c2)
-                       return 0;
-               s1 = sub + 1; s2 = str;
-               while ((c1 = *s1++) && ((isalpha(c1) && isupper(c1)) ? tolower(c1) : c1) == ((isalpha(c2 =*s2++) && isupper(c2)) ? tolower(c2) : c2))
-                       ;
-               if (! c1)
-                       return 1;
-       }
-#else
        while ((c1 = *sub)) {
-               while ((c2 = *str++) && (c1 | 040) != (c2 | 040))
+               while ((c2 = *str++) && tolower(c1) != tolower(c2))
                        ;
                if (! c2)
                        return 0;
                s1 = sub + 1; s2 = str;
-               while ((c1 = *s1++) && (c1 | 040) == (*s2++ | 040))
+               while ((c1 = *s1++) && tolower(c1) == tolower(*s2++))
                        ;
                if (! c1)
                        return 1;
        }
-#endif
        return 1;
 }
 
@@ -217,12 +194,7 @@ cpstripped(char **start, char *end, char *str)
                return;
 
        /* skip any initial control characters or spaces */
-       while ((c = (unsigned char) *s) &&
-#ifdef LOCALE
-                       (iscntrl(c) || isspace(c)))
-#else
-                       (c <= 32))
-#endif
+       while ((c = (unsigned char) *s) && (iscntrl(c) || isspace(c)))
                s++;
 
        /* compact repeated control characters and spaces into a single space */
@@ -231,11 +203,7 @@ cpstripped(char **start, char *end, char *str)
                        *(*start)++ = c;
                else {
                        while ((c = (unsigned char) *s) &&
-#ifdef LOCALE
-                               (iscntrl(c) || isspace(c)))
-#else
-                               (c <= 32))
-#endif
+                                       (iscntrl(c) || isspace(c)))
                                s++;
                        *(*start)++ = ' ';
                }
@@ -507,13 +475,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;
@@ -622,12 +590,12 @@ fmt_scan(struct format *format, char *scanl, int width, int *dat)
                        if (!(((tws = fmt->f_comp->c_tws)->tw_flags) & (TW_SEXP|TW_SIMP)))
                                set_dotw(tws);
                        switch (fmt->f_comp->c_tws->tw_flags & TW_SDAY) {
-                               case TW_SEXP:
-                                       value = 1; break;
-                               case TW_SIMP:
-                                       value = 0; break;
-                               default:
-                                       value = -1; break;
+                       case TW_SEXP:
+                               value = 1; break;
+                       case TW_SIMP:
+                               value = 0; break;
+                       default:
+                               value = -1; break;
                        }
                case FT_LV_ZONEF:
                        if ((fmt->f_comp->c_tws->tw_flags & TW_SZONE) == TW_SZEXP)
@@ -706,15 +674,9 @@ fmt_scan(struct format *format, char *scanl, int width, int *dat)
                                        case LOCALHOST:
                                                str = mn->m_mbox;
                                                break;
-                                       case UUCPHOST:
-                                               snprintf(buffer, sizeof(buffer), "%s!%s",
-                                                       mn->m_host, mn->m_mbox);
-                                               str = buffer;
-                                               break;
                                        default:
                                                if (mn->m_mbox) {
-                                                       snprintf(buffer, sizeof(buffer), "%s@%s",
-                                                               mn->m_mbox, mn->m_host);
+                                                       snprintf(buffer, sizeof(buffer), "%s@%s", mn->m_mbox, mn->m_host);
                                                        str= buffer;
                                                } else
                                                        str = mn->m_text;
@@ -740,18 +702,18 @@ fmt_scan(struct format *format, char *scanl, int width, int *dat)
 
                                while ( str[n] != '\0') {
                                        switch ( str[n] ) {
-                                               case '\\':
-                                                       n++;
-                                                       if ( str[n] != '\0')
-                                                               buffer2[m++] = str[n++];
-                                                       break;
-                                               case '"':
-                                                       n++;
-                                                       break;
-                                               default:
+                                       case '\\':
+                                               n++;
+                                               if ( str[n] != '\0')
                                                        buffer2[m++] = str[n++];
-                                                       break;
-                                               }
+                                               break;
+                                       case '"':
+                                               n++;
+                                               break;
+                                       default:
+                                               buffer2[m++] = str[n++];
+                                               break;
+                                       }
                                }
                                buffer2[m] = '\0';
                                str = buffer2;
@@ -902,28 +864,17 @@ fmt_scan(struct format *format, char *scanl, int width, int *dat)
                        }
                        break;
 
-               case FT_ADDTOSEQ:
-#ifdef LBL
-                       /*
-                       ** If we're working on a folder (as opposed to a
-                       ** file), add the current msg to sequence given
-                       ** in literal field.  Don't disturb string or
-                       ** value registers.
-                       */
-                       if (fmt_current_folder)
-                               seq_addmsg(fmt_current_folder, fmt->f_text, dat[0], -1);
-#endif
-                       break;
                }
                fmt++;
        }
-#ifndef JLR
-       finished:;
+finished:;
        if (cp[-1] != '\n')
                *cp++ = '\n';
-       *cp   = 0;
+       *cp = '\0';
        return ((struct format *)0);
-#else /* JLR */
+
+#ifdef JLR
+       /* I'll remove this as soon as I understand what it does. --meillo */
        if (cp[-1] != '\n')
                *cp++ = '\n';
        while (fmt->f_type != FT_DONE)
@@ -932,6 +883,6 @@ fmt_scan(struct format *format, char *scanl, int width, int *dat)
        finished:;
        *cp = '\0';
        return (fmt->f_value ? ++fmt : (struct format *) 0);
-
 #endif /* JLR */
+
 }