]> diplodocus.org Git - nmh/blobdiff - sbr/fmt_scan.c
repl.c, replsbr.c: Move shared data into header file.
[nmh] / sbr / fmt_scan.c
index 8e59669da598d93e25768c9bdadd2fe7b435f0b1..3c93a5a70b856f7564e86306fa518cdb0b40d7fe 100644 (file)
@@ -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;
 }