X-Git-Url: http://git.marmaro.de/?p=mmh;a=blobdiff_plain;f=sbr%2Ffmt_scan.c;h=5103dbd772697372477cda28ae083248f9611872;hp=ac98883324b56124b716e0379582ae205cf12378;hb=d5b5e6e4813b7fd77dc1664df4304537f3002cf3;hpb=714b5c530ece27ea2835a313013f5b770163403c diff --git a/sbr/fmt_scan.c b/sbr/fmt_scan.c index ac98883..5103dbd 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,29 +15,18 @@ #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 */ -#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 */ + }