]> diplodocus.org Git - nmh/blobdiff - uip/mhlsbr.c
Alter HasSuffixC()'s char * to be const.
[nmh] / uip / mhlsbr.c
index 28d489472125fd0f281e8711711223e43c3e8954..02ba0bcc1aad17e31fa42905faba21ff2a7479e1 100644 (file)
@@ -545,7 +545,7 @@ static void
 mhl_format (char *file, int length, int width)
 {
     int i;
 mhl_format (char *file, int length, int width)
 {
     int i;
-    char *bp, *cp, **ip;
+    char *bp, **ip;
     char *ap, name[NAMESZ];
     struct mcomp *c1;
     struct stat st;
     char *ap, name[NAMESZ];
     struct mcomp *c1;
     struct stat st;
@@ -560,8 +560,7 @@ mhl_format (char *file, int length, int width)
                && dev == st.st_dev
                && ino == st.st_ino)
            goto out;
                && dev == st.st_dev
                && ino == st.st_ino)
            goto out;
-       else
-           free_queue (&fmthd, &fmttl);
+        free_queue (&fmthd, &fmttl);
     }
 
     if ((fp = fopen (etcpath (file), "r")) == NULL)
     }
 
     if ((fp = fopen (etcpath (file), "r")) == NULL)
@@ -591,8 +590,7 @@ mhl_format (char *file, int length, int width)
        if (*bp == ';')
            continue;
 
        if (*bp == ';')
            continue;
 
-       if ((cp = strchr(bp, '\n')))
-           *cp = 0;
+        TrimSuffixC(bp, '\n');
 
        if (*bp == ':') {
            (void) add_queue (&fmthd, &fmttl, NULL, bp + 1, CLEARTEXT);
 
        if (*bp == ':') {
            (void) add_queue (&fmthd, &fmttl, NULL, bp + 1, CLEARTEXT);
@@ -614,7 +612,7 @@ mhl_format (char *file, int length, int width)
                    int n = 0;
 
                    /* split the fields */
                    int n = 0;
 
                    /* split the fields */
-                   tmparray = brkstring (getcpy (++parptr), ",", NULL);
+                   tmparray = brkstring (mh_xstrdup(++parptr), ",", NULL);
 
                    /* count number of fields split */
                    p = tmparray;
 
                    /* count number of fields split */
                    p = tmparray;
@@ -645,14 +643,14 @@ mhl_format (char *file, int length, int width)
                if (!c1->c_nfs && global.c_nfs) {
                    if (c1->c_flags & DATEFMT) {
                        if (global.c_flags & DATEFMT) {
                if (!c1->c_nfs && global.c_nfs) {
                    if (c1->c_flags & DATEFMT) {
                        if (global.c_flags & DATEFMT) {
-                           c1->c_nfs = getcpy (global.c_nfs);
+                           c1->c_nfs = mh_xstrdup(global.c_nfs);
                            compile_formatfield(c1);
                        }
                    }
                    else
                        if (c1->c_flags & ADDRFMT) {
                            if (global.c_flags & ADDRFMT) {
                            compile_formatfield(c1);
                        }
                    }
                    else
                        if (c1->c_flags & ADDRFMT) {
                            if (global.c_flags & ADDRFMT) {
-                               c1->c_nfs = getcpy (global.c_nfs);
+                               c1->c_nfs = mh_xstrdup(global.c_nfs);
                                compile_formatfield(c1);
                            }
                        }
                                compile_formatfield(c1);
                            }
                        }
@@ -778,7 +776,7 @@ evalvar (struct mcomp *c1)
            return 1;
        }
 
            return 1;
        }
 
-       args = (struct arglist *) mh_xcalloc ((size_t) 1, sizeof(struct arglist));
+       NEW0(args);
 
        if (arglist_tail)
            arglist_tail->a_next = args;
 
        if (arglist_tail)
            arglist_tail->a_next = args;
@@ -836,7 +834,7 @@ ptos (char *name, char **s)
     }
     c = *parptr;
     *parptr = 0;
     }
     c = *parptr;
     *parptr = 0;
-    *s = getcpy (cp);
+    *s = mh_xstrdup(cp);
     if ((*parptr = c) == '"')
        parptr++;
     return 0;
     if ((*parptr = c) == '"')
        parptr++;
     return 0;
@@ -875,14 +873,18 @@ parse (void)
 static void
 process (char *folder, char *fname, int ofilen, int ofilec)
 {
 static void
 process (char *folder, char *fname, int ofilen, int ofilec)
 {
-    char *cp = NULL;
-    FILE *fp = NULL;
+    /* static to prevent "might be clobbered" warning from gcc 4.9.2: */
+    static char *cp;
+    static FILE *fp;
     struct mcomp *c1;
     struct stat st;
     struct arglist *ap;
     /* volatile to prevent "might be clobbered" warning from gcc: */
     char *volatile fname2 = fname ? fname : "(stdin)";
 
     struct mcomp *c1;
     struct stat st;
     struct arglist *ap;
     /* volatile to prevent "might be clobbered" warning from gcc: */
     char *volatile fname2 = fname ? fname : "(stdin)";
 
+    cp = NULL;
+    fp = NULL;
+
     switch (setjmp (env)) {
        case OK: 
            if (fname) {
     switch (setjmp (env)) {
        case OK: 
            if (fname) {
@@ -900,10 +902,11 @@ process (char *folder, char *fname, int ofilen, int ofilec)
            } else {
                filesize = 0;
            }
            } else {
                filesize = 0;
            }
-           cp = folder ? concat (folder, ":", fname2, NULL) : getcpy (fname2);
+           cp = folder ? concat (folder, ":", fname2, NULL) : mh_xstrdup(fname2);
            if (ontty != PITTY)
                SIGNAL (SIGINT, intrser);
            mhlfile (fp, cp, ofilen, ofilec);  /* FALL THROUGH! */
            if (ontty != PITTY)
                SIGNAL (SIGINT, intrser);
            mhlfile (fp, cp, ofilen, ofilec);  /* FALL THROUGH! */
+            free (cp);
 
            for (ap = arglist_head; ap; ap = ap->a_next) {
                fmt_free(ap->a_fmt, 0);
 
            for (ap = arglist_head; ap; ap = ap->a_next) {
                fmt_free(ap->a_fmt, 0);
@@ -913,16 +916,13 @@ process (char *folder, char *fname, int ofilen, int ofilec)
            if (arglist_head)
                fmt_free(NULL, 1);
 
            if (arglist_head)
                fmt_free(NULL, 1);
 
-       default: 
+       default:
            if (ontty != PITTY)
                SIGNAL (SIGINT, SIG_IGN);
            if (ontty != PITTY)
                SIGNAL (SIGINT, SIG_IGN);
-           if (mhl_action == NULL && fp != stdin)
+           if (mhl_action == NULL && fp != stdin && fp != NULL)
                fclose (fp);
                fclose (fp);
-           free (cp);
-           if (holder.c_text) {
-               free (holder.c_text);
-               holder.c_text = NULL;
-           }
+            mh_xfree(holder.c_text);
+            holder.c_text = NULL;
            free_queue (&msghd, &msgtl);
            for (c1 = fmthd; c1; c1 = c1->c_next)
                c1->c_flags &= ~HDROUTPUT;
            free_queue (&msghd, &msgtl);
            for (c1 = fmthd; c1; c1 = c1->c_next)
                c1->c_flags &= ~HDROUTPUT;
@@ -986,7 +986,7 @@ mhlfile (FILE *fp, char *mname, int ofilen, int ofilec)
                        nmh_clear_screen ();
                }
                else
                        nmh_clear_screen ();
                }
                else
-                   printf ("\n");
+                   putchar('\n');
                break;
 
            default: 
                break;
 
            default: 
@@ -1184,18 +1184,15 @@ mcomp_format (struct mcomp *c1, struct mcomp *c2)
 
     (q = &pq)->pq_next = NULL;
     while ((cp = getname (ap))) {
 
     (q = &pq)->pq_next = NULL;
     while ((cp = getname (ap))) {
-       if ((p = (struct pqpair *) mh_xcalloc ((size_t) 1, sizeof(*p))) == NULL)
-           adios (NULL, "unable to allocate pqpair memory");
-       else {
-           if ((mp = getm (cp, NULL, 0, error, sizeof(error))) == NULL) {
-               p->pq_text = getcpy (cp);
-               p->pq_error = getcpy (error);
-           } else {
-               p->pq_text = getcpy (mp->m_text);
-               mnfree (mp);
-           }
-           q = (q->pq_next = p);
-       }
+       NEW0(p);
+        if ((mp = getm (cp, NULL, 0, error, sizeof(error))) == NULL) {
+            p->pq_text = mh_xstrdup(cp);
+            p->pq_error = mh_xstrdup(error);
+        } else {
+            p->pq_text = getcpy (mp->m_text);
+            mnfree (mp);
+        }
+        q = (q->pq_next = p);
     }
 
     for (p = pq.pq_next; p; p = q) {
     }
 
     for (p = pq.pq_next; p; p = q) {
@@ -1213,7 +1210,7 @@ mcomp_format (struct mcomp *c1, struct mcomp *c2)
 
        fmt_scan (c1->c_fmt, scanl, BUFSIZ - 1, dat, NULL);
        buffer = charstring_buffer_copy (scanl);
 
        fmt_scan (c1->c_fmt, scanl, BUFSIZ - 1, dat, NULL);
        buffer = charstring_buffer_copy (scanl);
-       if (strlen (buffer) > 0) {
+       if (*buffer) {
            if (c2->c_text)
                c2->c_text = add (",\n", c2->c_text);
            if (*(cp = buffer + strlen (buffer) - 1) == '\n')
            if (c2->c_text)
                c2->c_text = add (",\n", c2->c_text);
            if (*(cp = buffer + strlen (buffer) - 1) == '\n')
@@ -1222,12 +1219,10 @@ mcomp_format (struct mcomp *c1, struct mcomp *c2)
        }
        charstring_free (scanl);
 
        }
        charstring_free (scanl);
 
-       if (p->pq_text)
-           free (p->pq_text);
-       if (p->pq_error)
-           free (p->pq_error);
+        mh_xfree(p->pq_text);
+        mh_xfree(p->pq_error);
        q = p->pq_next;
        q = p->pq_next;
-       free ((char *) p);
+       free(p);
     }
 
     c2->c_text = add ("\n", c2->c_text);
     }
 
     c2->c_text = add ("\n", c2->c_text);
@@ -1240,22 +1235,19 @@ add_queue (struct mcomp **head, struct mcomp **tail, char *name, char *text, int
 {
     struct mcomp *c1;
 
 {
     struct mcomp *c1;
 
-    if ((c1 = (struct mcomp *) mh_xcalloc ((size_t) 1, sizeof(*c1))) == NULL)
-       adios (NULL, "unable to allocate comp memory");
-    else {
-       c1->c_flags = flags & ~INIT;
-       if ((c1->c_name = name ? getcpy (name) : NULL))
-           c1->c_flags |= mcomp_flags (c1->c_name);
-       c1->c_text = text ? getcpy (text) : NULL;
-       if (flags & INIT) {
-           if (global.c_ovtxt)
-               c1->c_ovtxt = getcpy (global.c_ovtxt);
-           c1->c_offset = global.c_offset;
-           c1->c_ovoff = global. c_ovoff;
-           c1->c_width = c1->c_length = 0;
-           c1->c_cwidth = global.c_cwidth;
-           c1->c_flags |= global.c_flags & GFLAGS;
-       }
+    NEW0(c1);
+    c1->c_flags = flags & ~INIT;
+    if ((c1->c_name = name ? mh_xstrdup(name) : NULL))
+        c1->c_flags |= mcomp_flags (c1->c_name);
+    c1->c_text = text ? mh_xstrdup(text) : NULL;
+    if (flags & INIT) {
+        if (global.c_ovtxt)
+            c1->c_ovtxt = mh_xstrdup(global.c_ovtxt);
+        c1->c_offset = global.c_offset;
+        c1->c_ovoff = global. c_ovoff;
+        c1->c_width = c1->c_length = 0;
+        c1->c_cwidth = global.c_cwidth;
+        c1->c_flags |= global.c_flags & GFLAGS;
     }
     if (*head == NULL)
        *head = c1;
     }
     if (*head == NULL)
        *head = c1;
@@ -1274,17 +1266,13 @@ free_queue (struct mcomp **head, struct mcomp **tail)
 
     for (c1 = *head; c1; c1 = c2) {
        c2 = c1->c_next;
 
     for (c1 = *head; c1; c1 = c2) {
        c2 = c1->c_next;
-       if (c1->c_name)
-           free (c1->c_name);
-       if (c1->c_text)
-           free (c1->c_text);
-       if (c1->c_ovtxt)
-           free (c1->c_ovtxt);
-       if (c1->c_nfs)
-           free (c1->c_nfs);
+        mh_xfree(c1->c_name);
+        mh_xfree(c1->c_text);
+        mh_xfree(c1->c_ovtxt);
+        mh_xfree(c1->c_nfs);
        if (c1->c_fmt)
            fmt_free (c1->c_fmt, 0);
        if (c1->c_fmt)
            fmt_free (c1->c_fmt, 0);
-       free ((char *) c1);
+       free(c1);
     }
 
     *head = *tail = NULL;
     }
 
     *head = *tail = NULL;
@@ -1294,14 +1282,15 @@ free_queue (struct mcomp **head, struct mcomp **tail)
 static void
 putcomp (struct mcomp *c1, struct mcomp *c2, int flag)
 {
 static void
 putcomp (struct mcomp *c1, struct mcomp *c2, int flag)
 {
+    char *text; /* c1's text, or the name as a fallback. */
+    char *trimmed_prefix;
     int count, cchdr;
     char *cp;
     int count, cchdr;
     char *cp;
-    /*
-     * Create a copy of c1->c_text with trailing whitespace
-     * trimmed, for use with blank lines.
-     */
-    char *trimmed_prefix =
-       rtrim (add (c1->c_text ? c1->c_text : c1->c_name, NULL));
+
+    text = c1->c_text ? c1->c_text : c1->c_name;
+    /* Create a copy with trailing whitespace trimmed, for use with
+     * blank lines. */
+    trimmed_prefix = rtrim(add(text, NULL));
 
     cchdr = 0;
     lm = 0;
 
     cchdr = 0;
     lm = 0;
@@ -1330,7 +1319,7 @@ putcomp (struct mcomp *c1, struct mcomp *c2, int flag)
        count = (c1->c_width ? c1->c_width : global.c_width)
            - c1->c_offset - strlen (c2->c_text);
        if (!(c1->c_flags & HDROUTPUT) && !(c1->c_flags & NOCOMPONENT))
        count = (c1->c_width ? c1->c_width : global.c_width)
            - c1->c_offset - strlen (c2->c_text);
        if (!(c1->c_flags & HDROUTPUT) && !(c1->c_flags & NOCOMPONENT))
-           count -= strlen (c1->c_text ? c1->c_text : c1->c_name) + 2;
+           count -= strlen(text) + 2;
        lm = c1->c_offset + (count / 2);
     } else {
        if (c1->c_offset)
        lm = c1->c_offset + (count / 2);
     } else {
        if (c1->c_offset)
@@ -1339,18 +1328,15 @@ putcomp (struct mcomp *c1, struct mcomp *c2, int flag)
 
     if (!(c1->c_flags & HDROUTPUT) && !(c1->c_flags & NOCOMPONENT)) {
         if (c1->c_flags & UPPERCASE)           /* uppercase component also */
 
     if (!(c1->c_flags & HDROUTPUT) && !(c1->c_flags & NOCOMPONENT)) {
         if (c1->c_flags & UPPERCASE)           /* uppercase component also */
-           for (cp = (c1->c_text ? c1->c_text : c1->c_name); *cp; cp++)
-               if (islower ((unsigned char) *cp))
-                   *cp = toupper ((unsigned char) *cp);
-       putstr (c1->c_text ? c1->c_text : c1->c_name, c1->c_flags);
+            ToUpper(text);
+       putstr(text, c1->c_flags);
        if (flag != BODYCOMP) {
            putstr (": ", c1->c_flags);
            if (!(c1->c_flags & SPLIT))
                c1->c_flags |= HDROUTPUT;
 
        cchdr++;
        if (flag != BODYCOMP) {
            putstr (": ", c1->c_flags);
            if (!(c1->c_flags & SPLIT))
                c1->c_flags |= HDROUTPUT;
 
        cchdr++;
-       if ((count = c1->c_cwidth -
-               strlen (c1->c_text ? c1->c_text : c1->c_name) - 2) > 0)
+       if ((count = c1->c_cwidth - strlen(text) - 2) > 0)
            while (count--)
                putstr (" ", c1->c_flags);
        }
            while (count--)
                putstr (" ", c1->c_flags);
        }
@@ -1362,9 +1348,7 @@ putcomp (struct mcomp *c1, struct mcomp *c2, int flag)
            && !(c2->c_flags & HDROUTPUT)
            && !(c2->c_flags & NOCOMPONENT)) {
         if (c1->c_flags & UPPERCASE)
            && !(c2->c_flags & HDROUTPUT)
            && !(c2->c_flags & NOCOMPONENT)) {
         if (c1->c_flags & UPPERCASE)
-           for (cp = c2->c_name; *cp; cp++)
-               if (islower ((unsigned char) *cp))
-                   *cp = toupper ((unsigned char) *cp);
+            ToUpper(c2->c_name);
        putstr (c2->c_name, c1->c_flags);
        putstr (": ", c1->c_flags);
        if (!(c1->c_flags & SPLIT))
        putstr (c2->c_name, c1->c_flags);
        putstr (": ", c1->c_flags);
        if (!(c1->c_flags & SPLIT))
@@ -1376,9 +1360,7 @@ putcomp (struct mcomp *c1, struct mcomp *c2, int flag)
                putstr (" ", c1->c_flags);
     }
     if (c1->c_flags & UPPERCASE)
                putstr (" ", c1->c_flags);
     }
     if (c1->c_flags & UPPERCASE)
-       for (cp = c2->c_text; *cp; cp++)
-           if (islower ((unsigned char) *cp))
-               *cp = toupper ((unsigned char) *cp);
+        ToUpper(c2->c_text);
 
     count = 0;
     if (cchdr) {
 
     count = 0;
     if (cchdr) {
@@ -1387,7 +1369,7 @@ putcomp (struct mcomp *c1, struct mcomp *c2, int flag)
                        : (int) strlen (c2->c_name) + 2;
        else
            count = (c1->c_cwidth >= 0) ? (size_t) c1->c_cwidth
                        : (int) strlen (c2->c_name) + 2;
        else
            count = (c1->c_cwidth >= 0) ? (size_t) c1->c_cwidth
-                       : strlen (c1->c_text ? c1->c_text : c1->c_name) + 2;
+                       : strlen(text) + 2;
     }
     count += c1->c_offset;
 
     }
     count += c1->c_offset;
 
@@ -1403,7 +1385,7 @@ putcomp (struct mcomp *c1, struct mcomp *c2, int flag)
            /* Output component, trimming trailing whitespace if there
               is no text on the line. */
            if (*cp) {
            /* Output component, trimming trailing whitespace if there
               is no text on the line. */
            if (*cp) {
-               putstr (c1->c_text ? c1->c_text : c1->c_name, c1->c_flags);
+               putstr(text, c1->c_flags);
            } else {
                putstr (trimmed_prefix, c1->c_flags);
            }
            } else {
                putstr (trimmed_prefix, c1->c_flags);
            }