X-Git-Url: http://git.marmaro.de/?p=mmh;a=blobdiff_plain;f=sbr%2Ffmt_scan.c;h=0616d17dfdccf91f385555822a81a56251eb9bf7;hp=f26b02bbb2eb226f3db5ac548447c736eb88baa7;hb=2abb9a7cfb0930e27062088734d306e7d78e4cc2;hpb=83e04675b53374a1436029a367283d6d4ee05a07 diff --git a/sbr/fmt_scan.c b/sbr/fmt_scan.c index f26b02b..0616d17 100644 --- a/sbr/fmt_scan.c +++ b/sbr/fmt_scan.c @@ -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 @@ -11,26 +14,18 @@ #include #include #include +#include -#ifdef TIME_WITH_SYS_TIME +#ifdef HAVE_SYS_TIME_H # include -# include -#else -# ifdef TM_IN_SYS_TIME -# include -# else -# include -# endif #endif +#include + #ifdef MULTIBYTE_SUPPORT # include # include #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))