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: extract parse_indent_comment from fil...



details:   https://anonhg.NetBSD.org/src/rev/24d68d235d6b
branches:  trunk
changeset: 987364:24d68d235d6b
user:      rillig <rillig%NetBSD.org@localhost>
date:      Fri Sep 24 18:37:03 2021 +0000

description:
indent: extract parse_indent_comment from fill_buffer

No functional change.

diffstat:

 usr.bin/indent/io.c |  99 +++++++++++++++++++++++++++++++---------------------
 1 files changed, 59 insertions(+), 40 deletions(-)

diffs (127 lines):

diff -r 2a7428c89826 -r 24d68d235d6b usr.bin/indent/io.c
--- a/usr.bin/indent/io.c       Fri Sep 24 18:14:06 2021 +0000
+++ b/usr.bin/indent/io.c       Fri Sep 24 18:37:03 2021 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: io.c,v 1.52 2021/09/24 18:14:06 rillig Exp $   */
+/*     $NetBSD: io.c,v 1.53 2021/09/24 18:37:03 rillig Exp $   */
 
 /*-
  * SPDX-License-Identifier: BSD-4-Clause
@@ -46,7 +46,7 @@
 #include <sys/cdefs.h>
 #ifndef lint
 #if defined(__NetBSD__)
-__RCSID("$NetBSD: io.c,v 1.52 2021/09/24 18:14:06 rillig Exp $");
+__RCSID("$NetBSD: io.c,v 1.53 2021/09/24 18:37:03 rillig Exp $");
 #elif defined(__FreeBSD__)
 __FBSDID("$FreeBSD: head/usr.bin/indent/io.c 334927 2018-06-10 16:44:18Z pstef $");
 #endif
@@ -330,6 +330,61 @@
     return opt.indent_size * (ps.ind_level - label_offset);
 }
 
+static void
+skip_hspace(const char **pp)
+{
+    while (**pp == ' ' || **pp == '\t')
+       (*pp)++;
+}
+
+static void
+parse_indent_comment(void)
+{
+    int on_off = 0;            /* 0 = keep, 1 = ON, 2 = OFF */
+
+    const char *p = in_buffer;
+
+    skip_hspace(&p);
+
+    if (!(*p == '/' && p[1] == '*'))
+       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'))
+       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)
+       return;
+
+    skip_hspace(&p);
+
+    if (!(p[0] == '*' && p[1] == '/' && p[2] == '\n'))
+       return;
+
+    if (com.s != com.e || s_lab != e_lab || s_code != e_code)
+       dump_line();
+
+    if (!(inhibit_formatting = on_off - 1)) {
+       n_real_blanklines = 0;
+       postfix_blankline_requested = 0;
+       prefix_blankline_requested = 0;
+       suppress_blanklines = 1;
+    }
+}
 
 /*
  * Copyright (C) 1976 by the Board of Trustees of the University of Illinois
@@ -380,44 +435,8 @@
     if (p - in_buffer > 2 && p[-2] == '/' && p[-3] == '*') {
        if (in_buffer[3] == 'I' && strncmp(in_buffer, "/**INDENT**", 11) == 0)
            fill_buffer();      /* flush indent error message */
-       else {
-           int comena = 0;     /* 1 = ON, 2 = OFF */
-
-           p = in_buffer;
-           while (*p == ' ' || *p == '\t')
-               p++;
-           if (*p == '/' && p[1] == '*') {
-               p += 2;
-               while (*p == ' ' || *p == '\t')
-                   p++;
-               if (p[0] == 'I' && p[1] == 'N' && p[2] == 'D' && p[3] == 'E'
-                       && p[4] == 'N' && p[5] == 'T') {
-                   p += 6;
-                   while (*p == ' ' || *p == '\t')
-                       p++;
-                   if (*p == '*')
-                       comena = 1;
-                   else if (*p == 'O') {
-                       if (*++p == 'N')
-                           p++, comena = 1;
-                       else if (*p == 'F' && *++p == 'F')
-                           p++, comena = 2;
-                   }
-                   while (*p == ' ' || *p == '\t')
-                       p++;
-                   if (p[0] == '*' && p[1] == '/' && p[2] == '\n' && comena) {
-                       if (com.s != com.e || s_lab != e_lab || s_code != e_code)
-                           dump_line();
-                       if (!(inhibit_formatting = comena - 1)) {
-                           n_real_blanklines = 0;
-                           postfix_blankline_requested = 0;
-                           prefix_blankline_requested = 0;
-                           suppress_blanklines = 1;
-                       }
-                   }
-               }
-           }
-       }
+       else
+           parse_indent_comment();
     }
     if (inhibit_formatting) {
        p = in_buffer;



Home | Main Index | Thread Index | Old Index