Move #include from h/mh.h to source files
[mmh] / sbr / fmt_scan.c
index f26b02b..0616d17 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/fmt_scan.h>
 #include <h/tws.h>
 #include <h/fmt_compile.h>
+#include <ctype.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 */
-
 extern int fmt_norm;  /* defined in sbr/fmt_def.c = AD_NAME */
 struct mailname fmt_mnull;
 
@@ -479,13 +474,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;
@@ -611,10 +606,8 @@ fmt_scan(struct format *format, char *scanl, int width, int *dat)
                        value = fmt->f_comp->c_tws->tw_flags & TW_DST;
                        break;
                case FT_LS_822DATE:
-                       str = dasctime(fmt->f_comp->c_tws , TW_ZONE);
-                       break;
                case FT_LS_PRETTY:
-                       str = dasctime(fmt->f_comp->c_tws, TW_NULL);
+                       str = dasctime(fmt->f_comp->c_tws);
                        break;
 
                case FT_LS_PERS:
@@ -685,7 +678,7 @@ fmt_scan(struct format *format, char *scanl, int width, int *dat)
                                                } else
                                                        str = mn->m_text;
                                                break;
-                                 }
+                                       }
                                }
                        }
                        break;
@@ -781,12 +774,18 @@ fmt_scan(struct format *format, char *scanl, int width, int *dat)
                        sp = fmt->f_text;
                        indent = strlen(sp);
                        wid -= indent;
+                       if (wid <= 0) {
+                               adios(NULL, "putaddr -- num register (%d) "
+                                               "must be greater than label "
+                                               "width (%d)", value, indent);
+                       }
                        while( (c = *sp++) && cp < ep)
                                *cp++ = c;
                        while (len > wid) {
-                               /* try to break at a comma; failing that,
-                                * break at a space.
-                                */
+                               /*
+                               ** try to break at a comma; failing that,
+                               ** break at a space.
+                               */
                                lastb = 0; sp = lp + wid;
                                while (sp > lp && (c = *--sp) != ',') {
                                        if (! lastb && isspace(c))