X-Git-Url: http://git.marmaro.de/?a=blobdiff_plain;f=sbr%2Ffmt_scan.c;h=ec086a1371ae034cb9ced86a36782761c0c1d639;hb=0c9207459097089a931399ff7d384884288bc4ac;hp=f26b02bbb2eb226f3db5ac548447c736eb88baa7;hpb=83e04675b53374a1436029a367283d6d4ee05a07;p=mmh diff --git a/sbr/fmt_scan.c b/sbr/fmt_scan.c index f26b02b..ec086a1 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 @@ -12,25 +15,16 @@ #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 +473,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 +605,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: @@ -781,6 +773,11 @@ 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) {