X-Git-Url: http://git.marmaro.de/?a=blobdiff_plain;f=sbr%2Ffmt_scan.c;h=29b87d02713d18cf26b2f0c0250150429210adee;hb=f311d0371d3585ad4f97a69de9669dd49197686a;hp=574eeb315e4f885d58c0baae839e6ba0e8dbc0fd;hpb=c3ed95b3c5530b84a73dbdd531cb9aca9ba8dea0;p=mmh diff --git a/sbr/fmt_scan.c b/sbr/fmt_scan.c index 574eeb3..29b87d0 100644 --- a/sbr/fmt_scan.c +++ b/sbr/fmt_scan.c @@ -25,15 +25,13 @@ # include #endif -extern char *formataddr (); /* hook for custom address formatting */ -extern char *concataddr (); /* address formatting but allowing duplicates */ - #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; +struct mailname fmt_mnull = { NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, + NULL, NULL }; /* * static prototypes @@ -155,7 +153,10 @@ cptrimmed(char **dest, char *str, unsigned int wid, char fill, size_t n) { sp += char_len; #else end--; - if (iscntrl(*sp) || isspace(*sp)) { + /* isnctrl(), etc., take an int argument. Cygwin's ctype.h + intentionally warns if they are passed a char. */ + int c = *sp; + if (iscntrl(c) || isspace(c)) { sp++; #endif if (!prevCtrl) { @@ -508,13 +509,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; @@ -818,6 +819,10 @@ 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) {