X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/a091c28b416f83aa46dcb0bd0da81ca1d3b8a7f9..4fb142af4ad2ca73d141cc04af24e7c1b62f8a77:/sbr/fmt_scan.c diff --git a/sbr/fmt_scan.c b/sbr/fmt_scan.c index 8e59669d..3c93a5a7 100644 --- a/sbr/fmt_scan.c +++ b/sbr/fmt_scan.c @@ -31,7 +31,7 @@ struct mailname fmt_mnull = { NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, /* * static prototypes */ -static int match (char *, char *); +static int match (char *, char *) PURE; static char *get_x400_friendly (char *, char *, int); static int get_x400_comp (char *, char *, char *, int); @@ -67,8 +67,13 @@ match (char *str, char *sub) * copy a number to the destination subject to a maximum width */ void -cpnumber(charstring_t dest, int num, unsigned int wid, char fill, size_t max) { - if (wid < (num >= 0 ? max : max-1)) { +cpnumber(charstring_t dest, int num, int wid, char fill, size_t max) { + /* Maybe we should handle left padding at some point? */ + if (wid == 0) + return; + if (wid < 0) + wid = -wid; /* OK because wid originally a short. */ + if ((size_t)wid < (num >= 0 ? max : max-1)) { /* Build up the string representation of num in reverse. */ charstring_t rev = charstring_create (0); int i = num >= 0 ? num : -num; @@ -117,7 +122,7 @@ cpnumber(charstring_t dest, int num, unsigned int wid, char fill, size_t max) { void cptrimmed(charstring_t dest, char *str, int wid, char fill, size_t max) { int remaining; /* remaining output width available */ - int rjust; + bool rjust; struct charstring *trimmed; size_t end; /* number of input bytes remaining in str */ #ifdef MULTIBYTE_SUPPORT @@ -127,18 +132,18 @@ cptrimmed(charstring_t dest, char *str, int wid, char fill, size_t max) { char *altstr = NULL; #endif char *sp; /* current position in source string */ - int prevCtrl = 1; /* get alignment */ - rjust = 0; + rjust = false; if ((remaining = wid) < 0) { remaining = -remaining; - rjust++; + rjust = true; } if (remaining > (int) max) { remaining = max; } trimmed = rjust ? charstring_create(remaining) : dest; + bool prevCtrl = true; if ((sp = str)) { #ifdef MULTIBYTE_SUPPORT if (mbtowc(NULL, NULL, 0)) {} /* reset shift state */ @@ -188,10 +193,10 @@ cptrimmed(charstring_t dest, char *str, int wid, char fill, size_t max) { remaining--; } - prevCtrl = 1; + prevCtrl = true; continue; } - prevCtrl = 0; + prevCtrl = false; #ifdef MULTIBYTE_SUPPORT if (w >= 0 && remaining >= w) { @@ -391,7 +396,8 @@ fmt_scan (struct format *format, charstring_t scanlp, int width, int *dat, char *sp; char *savestr, *str; char buffer[NMH_BUFSIZ], buffer2[NMH_BUFSIZ]; - int i, c, rjust; + int i, c; + bool rjust; int value; time_t t; size_t max; @@ -459,11 +465,11 @@ fmt_scan (struct format *format, charstring_t scanlp, int width, int *dat, break; case FT_LITF: sp = fmt->f_text; - rjust = 0; + rjust = false; i = fmt->f_width; if (i < 0) { i = -i; - rjust++; /* XXX should do something with this */ + rjust = true; /* XXX should do something with this */ } while ((c = *sp++) && --i >= 0 && charstring_chars (scanlp) < max) { charstring_push_back (scanlp, c); @@ -492,7 +498,7 @@ fmt_scan (struct format *format, charstring_t scanlp, int width, int *dat, if (str) charstring_push_back_chars (scanlp, str, strlen (str), 0); break; case FT_STRFW: - adios (NULL, "internal error (FT_STRFW)"); + die("internal error (FT_STRFW)"); case FT_NUM: { int num = value; @@ -718,10 +724,10 @@ fmt_scan (struct format *format, charstring_t scanlp, int width, int *dat, str = buffer; while (isspace((unsigned char) *str)) str++; - rjust = 0; + rjust = false; if ((i = fmt->f_width) < 0) { i = -i; - rjust++; + rjust = true; } if (!rjust && i > 0 && (int) strlen(str) > i) @@ -836,7 +842,7 @@ fmt_scan (struct format *format, charstring_t scanlp, int width, int *dat, case FT_LV_RCLOCK: if ((value = fmt->f_comp->c_tws->tw_clock) == 0) value = dmktime(fmt->f_comp->c_tws); - value = time((time_t *) 0) - value; + value = time(NULL) - value; break; case FT_LV_DAYF: if (!(((tws = fmt->f_comp->c_tws)->tw_flags) & (TW_SEXP|TW_SIMP))) @@ -984,7 +990,7 @@ fmt_scan (struct format *format, charstring_t scanlp, int width, int *dat, *comp->c_tws = *tws; comp->c_flags &= ~CF_TRUE; } else if ((comp->c_flags & CF_DATEFAB) == 0) { - memset (comp->c_tws, 0, sizeof *comp->c_tws); + ZERO(comp->c_tws); comp->c_flags = CF_TRUE; } comp->c_flags |= CF_PARSED; @@ -1024,7 +1030,7 @@ fmt_scan (struct format *format, charstring_t scanlp, int width, int *dat, indent = strlen (sp); wid -= indent; if (wid <= 0) { - adios(NULL, "putaddr -- num register (%d) must be greater " + die("putaddr -- num register (%d) must be greater " "than label width (%d)", value, indent); } while ((c = *sp++) && charstring_chars (scanlp) < max) { @@ -1201,5 +1207,5 @@ fmt_scan (struct format *format, charstring_t scanlp, int width, int *dat, } } - return (NULL); + return NULL; }