Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/usr.bin/indent indent: convert big macros to functions



details:   https://anonhg.NetBSD.org/src/rev/3ae33c46aacb
branches:  trunk
changeset: 960128:3ae33c46aacb
user:      rillig <rillig%NetBSD.org@localhost>
date:      Mon Mar 08 20:15:42 2021 +0000

description:
indent: convert big macros to functions

Each of these buffers is only modified in a single file.  This makes it
unnecessary to declare the macros in the global header.

diffstat:

 usr.bin/indent/indent.c       |  60 ++++++++++++++++++++++++++++++++----------
 usr.bin/indent/indent_globs.h |  54 +-------------------------------------
 usr.bin/indent/lexi.c         |  33 +++++++++++++++++------
 usr.bin/indent/pr_comment.c   |  36 ++++++++++++++++++++-----
 4 files changed, 99 insertions(+), 84 deletions(-)

diffs (truncated from 426 to 300 lines):

diff -r b6e2cf7d0740 -r 3ae33c46aacb usr.bin/indent/indent.c
--- a/usr.bin/indent/indent.c   Mon Mar 08 20:12:04 2021 +0000
+++ b/usr.bin/indent/indent.c   Mon Mar 08 20:15:42 2021 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: indent.c,v 1.33 2021/03/08 19:06:48 rillig Exp $       */
+/*     $NetBSD: indent.c,v 1.34 2021/03/08 20:15:42 rillig Exp $       */
 
 /*-
  * SPDX-License-Identifier: BSD-4-Clause
@@ -46,7 +46,7 @@
 #include <sys/cdefs.h>
 #ifndef lint
 #if defined(__NetBSD__)
-__RCSID("$NetBSD: indent.c,v 1.33 2021/03/08 19:06:48 rillig Exp $");
+__RCSID("$NetBSD: indent.c,v 1.34 2021/03/08 20:15:42 rillig Exp $");
 #elif defined(__FreeBSD__)
 __FBSDID("$FreeBSD: head/usr.bin/indent/indent.c 340138 2018-11-04 19:24:49Z oshogbo $");
 #endif
@@ -133,6 +133,36 @@
                                                 * files */
 char        bakfile[MAXPATHLEN] = "";
 
+static void
+check_size_code(size_t desired_size)
+{
+    if (e_code + (desired_size) >= l_code) {
+       int nsize = l_code - s_code + 400 + desired_size;
+       int code_len = e_code - s_code;
+       codebuf = (char *)realloc(codebuf, nsize);
+       if (codebuf == NULL)
+           err(1, NULL);
+       e_code = codebuf + code_len + 1;
+       l_code = codebuf + nsize - 5;
+       s_code = codebuf + 1;
+    }
+}
+
+static void
+check_size_label(size_t desired_size)
+{
+    if (e_lab + (desired_size) >= l_lab) {
+       int nsize = l_lab - s_lab + 400 + desired_size;
+       int label_len = e_lab - s_lab;
+       labbuf = (char *)realloc(labbuf, nsize);
+       if (labbuf == NULL)
+           err(1, NULL);
+       e_lab = labbuf + label_len + 1;
+       l_lab = labbuf + nsize - 5;
+       s_lab = labbuf + 1;
+    }
+}
+
 int
 main(int argc, char **argv)
 {
@@ -584,7 +614,7 @@
                                         * in a line. fix it */
                int len = e_com - s_com;
 
-               CHECK_SIZE_CODE(len + 3);
+               check_size_code(len + 3);
                *e_code++ = ' ';
                memcpy(e_code, s_com, len);
                e_code += len;
@@ -603,8 +633,8 @@
        /*-----------------------------------------------------*\
        |          do switch on type of token scanned           |
        \*-----------------------------------------------------*/
-       CHECK_SIZE_CODE(3);     /* maximum number of increments of e_code
-                                * before the next CHECK_SIZE_CODE or
+       check_size_code(3);     /* maximum number of increments of e_code
+                                * before the next check_size_code or
                                 * dump_line() is 2. After that there's the
                                 * final increment for the null character. */
        switch (type_code) {    /* now, decide what to do with the token */
@@ -720,7 +750,7 @@
            {
                int len = e_token - s_token;
 
-               CHECK_SIZE_CODE(len);
+               check_size_code(len);
                memcpy(e_code, token, len);
                e_code += len;
            }
@@ -731,7 +761,7 @@
            {
                int len = e_token - s_token;
 
-               CHECK_SIZE_CODE(len + 1);
+               check_size_code(len + 1);
                if (ps.want_blank)
                    *e_code++ = ' ';
                memcpy(e_code, token, len);
@@ -782,7 +812,7 @@
            {
                int len = e_code - s_code;
 
-               CHECK_SIZE_LAB(len + 3);
+               check_size_label(len + 3);
                memcpy(e_lab, s_code, len);
                e_lab += len;
                *e_lab++ = ':';
@@ -1073,7 +1103,7 @@
            {
                int len = e_token - s_token;
 
-               CHECK_SIZE_CODE(len + 1);
+               check_size_code(len + 1);
                if (ps.want_blank)
                    *e_code++ = ' ';
                memcpy(e_code, s_token, len);
@@ -1087,7 +1117,7 @@
            {
                int len = e_token - s_token;
 
-               CHECK_SIZE_CODE(len + 1);
+               check_size_code(len + 1);
                if (ps.want_blank)
                    *e_code++ = ' ';
                memcpy(e_code, token, len);
@@ -1128,7 +1158,7 @@
                    (s_lab != e_lab) ||
                    (s_code != e_code))
                dump_line();
-           CHECK_SIZE_LAB(1);
+           check_size_label(1);
            *e_lab++ = '#';     /* move whole line to 'label' buffer */
            {
                int         in_comment = 0;
@@ -1142,7 +1172,7 @@
                        fill_buffer();
                }
                while (*buf_ptr != '\n' || (in_comment && !had_eof)) {
-                   CHECK_SIZE_LAB(2);
+                   check_size_label(2);
                    *e_lab = *buf_ptr++;
                    if (buf_ptr >= buf_end)
                        fill_buffer();
@@ -1210,7 +1240,7 @@
                    buf_end = sc_end;
                    sc_end = NULL;
                }
-               CHECK_SIZE_LAB(1);
+               check_size_label(1);
                *e_lab = '\0';  /* null terminate line */
                ps.pcase = false;
            }
@@ -1343,13 +1373,13 @@
     if (tabs_to_var) {
        int tpos;
 
-       CHECK_SIZE_CODE(cur_dec_ind / opt.tabsize);
+       check_size_code(cur_dec_ind / opt.tabsize);
        while ((tpos = opt.tabsize * (1 + pos / opt.tabsize)) <= cur_dec_ind) {
            *e_code++ = '\t';
            pos = tpos;
        }
     }
-    CHECK_SIZE_CODE(cur_dec_ind - pos + 1);
+    check_size_code(cur_dec_ind - pos + 1);
     while (pos < cur_dec_ind) {
        *e_code++ = ' ';
        pos++;
diff -r b6e2cf7d0740 -r 3ae33c46aacb usr.bin/indent/indent_globs.h
--- a/usr.bin/indent/indent_globs.h     Mon Mar 08 20:12:04 2021 +0000
+++ b/usr.bin/indent/indent_globs.h     Mon Mar 08 20:15:42 2021 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: indent_globs.h,v 1.15 2021/03/07 20:40:18 rillig Exp $ */
+/*     $NetBSD: indent_globs.h,v 1.16 2021/03/08 20:15:42 rillig Exp $ */
 
 /*-
  * SPDX-License-Identifier: BSD-4-Clause
@@ -54,58 +54,6 @@
 extern FILE       *input;              /* the fid for the input file */
 extern FILE       *output;             /* the output file */
 
-#define CHECK_SIZE_CODE(desired_size) \
-       if (e_code + (desired_size) >= l_code) { \
-           int nsize = l_code-s_code + 400 + desired_size; \
-           int code_len = e_code-s_code; \
-           codebuf = (char *) realloc(codebuf, nsize); \
-           if (codebuf == NULL) \
-               err(1, NULL); \
-           e_code = codebuf + code_len + 1; \
-           l_code = codebuf + nsize - 5; \
-           s_code = codebuf + 1; \
-       }
-#define CHECK_SIZE_COM(desired_size) \
-       if (e_com + (desired_size) >= l_com) { \
-           int nsize = l_com-s_com + 400 + desired_size; \
-           int com_len = e_com - s_com; \
-           int blank_pos; \
-           if (last_bl != NULL) \
-               blank_pos = last_bl - combuf; \
-           else \
-               blank_pos = -1; \
-           combuf = (char *) realloc(combuf, nsize); \
-           if (combuf == NULL) \
-               err(1, NULL); \
-           e_com = combuf + com_len + 1; \
-           if (blank_pos > 0) \
-               last_bl = combuf + blank_pos; \
-           l_com = combuf + nsize - 5; \
-           s_com = combuf + 1; \
-       }
-#define CHECK_SIZE_LAB(desired_size) \
-       if (e_lab + (desired_size) >= l_lab) { \
-           int nsize = l_lab-s_lab + 400 + desired_size; \
-           int label_len = e_lab - s_lab; \
-           labbuf = (char *) realloc(labbuf, nsize); \
-           if (labbuf == NULL) \
-               err(1, NULL); \
-           e_lab = labbuf + label_len + 1; \
-           l_lab = labbuf + nsize - 5; \
-           s_lab = labbuf + 1; \
-       }
-#define CHECK_SIZE_TOKEN(desired_size) \
-       if (e_token + (desired_size) >= l_token) { \
-           int nsize = l_token-s_token + 400 + desired_size; \
-           int token_len = e_token - s_token; \
-           tokenbuf = (char *) realloc(tokenbuf, nsize); \
-           if (tokenbuf == NULL) \
-               err(1, NULL); \
-           e_token = tokenbuf + token_len + 1; \
-           l_token = tokenbuf + nsize - 5; \
-           s_token = tokenbuf + 1; \
-       }
-
 extern char       *labbuf;             /* buffer for label */
 extern char       *s_lab;              /* start ... */
 extern char       *e_lab;              /* .. and end of stored label */
diff -r b6e2cf7d0740 -r 3ae33c46aacb usr.bin/indent/lexi.c
--- a/usr.bin/indent/lexi.c     Mon Mar 08 20:12:04 2021 +0000
+++ b/usr.bin/indent/lexi.c     Mon Mar 08 20:15:42 2021 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: lexi.c,v 1.24 2021/03/07 22:11:01 rillig Exp $ */
+/*     $NetBSD: lexi.c,v 1.25 2021/03/08 20:15:42 rillig Exp $ */
 
 /*-
  * SPDX-License-Identifier: BSD-4-Clause
@@ -46,7 +46,7 @@
 #include <sys/cdefs.h>
 #ifndef lint
 #if defined(__NetBSD__)
-__RCSID("$NetBSD: lexi.c,v 1.24 2021/03/07 22:11:01 rillig Exp $");
+__RCSID("$NetBSD: lexi.c,v 1.25 2021/03/08 20:15:42 rillig Exp $");
 #elif defined(__FreeBSD__)
 __FBSDID("$FreeBSD: head/usr.bin/indent/lexi.c 337862 2018-08-15 18:19:45Z pstef $");
 #endif
@@ -171,6 +171,21 @@
     [0]   = "uuiifuufiuuiiuiiiiiuiuuuuu",
 };
 
+static void
+check_size_token(size_t desired_size)
+{
+    if (e_token + (desired_size) >= l_token) {
+       int nsize = l_token - s_token + 400 + desired_size;
+       int token_len = e_token - s_token;
+       tokenbuf = (char *)realloc(tokenbuf, nsize);
+       if (tokenbuf == NULL)
+           err(1, NULL);
+       e_token = tokenbuf + token_len + 1;
+       l_token = tokenbuf + nsize - 5;
+       s_token = tokenbuf + 1;
+    }
+}
+
 static int
 strcmp_type(const void *e1, const void *e2)
 {
@@ -277,7 +292,7 @@
                    break;
                }
                s = table[i][s - 'A'];
-               CHECK_SIZE_TOKEN(1);
+               check_size_token(1);
                *e_token++ = *buf_ptr++;
                if (buf_ptr >= buf_end)
                    fill_buffer();
@@ -297,7 +312,7 @@
                        } else
                            break;
                }
-               CHECK_SIZE_TOKEN(1);
+               check_size_token(1);
                /* copy it over */
                *e_token++ = *buf_ptr++;
                if (buf_ptr >= buf_end)
@@ -420,7 +435,7 @@
 
     /* Scan a non-alphanumeric token */
 
-    CHECK_SIZE_TOKEN(3);               /* things like "<<=" */
+    check_size_token(3);               /* things like "<<=" */
     *e_token++ = *buf_ptr;             /* if it is only a one-character token, it is
                                 * moved here */
     *e_token = '\0';
@@ -448,7 +463,7 @@
                    diag(1, "Unterminated literal");



Home | Main Index | Thread Index | Old Index