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: rewrite parse_indent_comment for huma...



details:   https://anonhg.NetBSD.org/src/rev/6d768e311b7c
branches:  trunk
changeset: 1023977:6d768e311b7c
user:      rillig <rillig%NetBSD.org@localhost>
date:      Tue Oct 05 21:05:12 2021 +0000

description:
indent: rewrite parse_indent_comment for human readers

The generated code is still very similar, GCC does a good job at
inlining strncmp.

No functional change.

diffstat:

 usr.bin/indent/io.c |  49 ++++++++++++++++++++++++-------------------------
 1 files changed, 24 insertions(+), 25 deletions(-)

diffs (89 lines):

diff -r fe50eacbe2f2 -r 6d768e311b7c usr.bin/indent/io.c
--- a/usr.bin/indent/io.c       Tue Oct 05 21:01:10 2021 +0000
+++ b/usr.bin/indent/io.c       Tue Oct 05 21:05:12 2021 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: io.c,v 1.72 2021/10/05 18:50:42 rillig Exp $   */
+/*     $NetBSD: io.c,v 1.73 2021/10/05 21:05:12 rillig Exp $   */
 
 /*-
  * SPDX-License-Identifier: BSD-4-Clause
@@ -43,7 +43,7 @@
 
 #include <sys/cdefs.h>
 #if defined(__NetBSD__)
-__RCSID("$NetBSD: io.c,v 1.72 2021/10/05 18:50:42 rillig Exp $");
+__RCSID("$NetBSD: io.c,v 1.73 2021/10/05 21:05:12 rillig Exp $");
 #elif defined(__FreeBSD__)
 __FBSDID("$FreeBSD: head/usr.bin/indent/io.c 334927 2018-06-10 16:44:18Z pstef $");
 #endif
@@ -332,48 +332,47 @@
        (*pp)++;
 }
 
+static bool
+skip_string(const char **pp, const char *s)
+{
+    size_t len = strlen(s);
+    if (strncmp(*pp, s, len) == 0) {
+       *pp += len;
+       return true;
+    }
+    return false;
+}
+
 static void
 parse_indent_comment(void)
 {
-    int on_off = 0;            /* 0 = keep, 1 = ON, 2 = OFF */
+    bool on_off;
 
     const char *p = in_buffer;
 
     skip_hspace(&p);
-
-    if (!(*p == '/' && p[1] == '*'))
+    if (!skip_string(&p, "/*"))
        return;
-    p += 2;
-
     skip_hspace(&p);
-
-    if (!(p[0] == 'I' && p[1] == 'N' && p[2] == 'D'
-           && p[3] == 'E' && p[4] == 'N' && p[5] == 'T'))
+    if (!skip_string(&p, "INDENT"))
        return;
-    p += 6;
-
     skip_hspace(&p);
-
-    if (*p == '*')
-       on_off = 1;
-    else if (*p == 'O') {
-       if (*++p == 'N')
-           p++, on_off = 1;
-       else if (*p == 'F' && *++p == 'F')
-           p++, on_off = 2;
-    }
-    if (on_off == 0)
+    if (*p == '*' || skip_string(&p, "ON"))
+       on_off = true;
+    else if (skip_string(&p, "OFF"))
+       on_off = false;
+    else
        return;
 
     skip_hspace(&p);
-
-    if (!(p[0] == '*' && p[1] == '/' && p[2] == '\n'))
+    if (!skip_string(&p, "*/\n"))
        return;
 
     if (com.s != com.e || lab.s != lab.e || code.s != code.e)
        dump_line();
 
-    if (!(inhibit_formatting = (on_off == 2))) {
+    inhibit_formatting = !on_off;
+    if (on_off) {
        next_blank_lines = 0;
        postfix_blankline_requested = false;
        prefix_blankline_requested = false;



Home | Main Index | Thread Index | Old Index