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: clean up argument handling



details:   https://anonhg.NetBSD.org/src/rev/71d593ffde9f
branches:  trunk
changeset: 1023767:71d593ffde9f
user:      rillig <rillig%NetBSD.org@localhost>
date:      Sat Sep 25 21:42:43 2021 +0000

description:
indent: clean up argument handling

No functional change.

diffstat:

 usr.bin/indent/args.c   |  22 ++++++++++------------
 usr.bin/indent/indent.c |  47 +++++++++++++++++++++--------------------------
 usr.bin/indent/indent.h |   4 ++--
 3 files changed, 33 insertions(+), 40 deletions(-)

diffs (155 lines):

diff -r 437fd70e5cb3 -r 71d593ffde9f usr.bin/indent/args.c
--- a/usr.bin/indent/args.c     Sat Sep 25 21:26:03 2021 +0000
+++ b/usr.bin/indent/args.c     Sat Sep 25 21:42:43 2021 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: args.c,v 1.28 2021/09/25 21:20:59 rillig Exp $ */
+/*     $NetBSD: args.c,v 1.29 2021/09/25 21:42:43 rillig Exp $ */
 
 /*-
  * SPDX-License-Identifier: BSD-4-Clause
@@ -43,7 +43,7 @@
 
 #include <sys/cdefs.h>
 #if defined(__NetBSD__)
-__RCSID("$NetBSD: args.c,v 1.28 2021/09/25 21:20:59 rillig Exp $");
+__RCSID("$NetBSD: args.c,v 1.29 2021/09/25 21:42:43 rillig Exp $");
 #elif defined(__FreeBSD__)
 __FBSDID("$FreeBSD: head/usr.bin/indent/args.c 336318 2018-07-15 21:04:21Z pstef $");
 #endif
@@ -56,6 +56,7 @@
 #include <ctype.h>
 #include <err.h>
 #include <limits.h>
+#include <stdint.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
@@ -102,14 +103,14 @@
 
 /*
  * N.B.: because of the way the table here is scanned, options whose names are
- * substrings of other options must occur later; that is, with -lp vs -l, -lp
- * must be first.
+ * a prefix of other options must occur later; that is, with -lp vs -l, -lp
+ * must be first and -l must be last.
  */
-const struct pro {
+static const struct pro {
     const char  p_name[9];     /* name, e.g. "bl", "cli" */
-    int         p_type;                /* type (int, bool, special) */
+    uint8_t     p_type;                /* type (int, bool, special) */
     int         p_special;     /* depends on type */
-    void        *p_obj;                /* the associated variable */
+    void        *p_obj;                /* the associated variable (bool, int) */
 }           pro[] = {
     special_option("T", KEY),
     special_option("U", KEY_FILE),
@@ -256,7 +257,7 @@
 }
 
 void
-set_option(char *arg)
+set_option(const char *arg)
 {
     const struct pro *p;
     const char *param_start;
@@ -311,10 +312,7 @@
        break;
 
     case PRO_BOOL:
-       if (p->p_special == OFF)
-           *(bool *)p->p_obj = false;
-       else
-           *(bool *)p->p_obj = true;
+       *(bool *)p->p_obj = p->p_special == ON;
        break;
 
     case PRO_INT:
diff -r 437fd70e5cb3 -r 71d593ffde9f usr.bin/indent/indent.c
--- a/usr.bin/indent/indent.c   Sat Sep 25 21:26:03 2021 +0000
+++ b/usr.bin/indent/indent.c   Sat Sep 25 21:42:43 2021 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: indent.c,v 1.79 2021/09/25 20:56:53 rillig Exp $       */
+/*     $NetBSD: indent.c,v 1.80 2021/09/25 21:42:43 rillig Exp $       */
 
 /*-
  * SPDX-License-Identifier: BSD-4-Clause
@@ -43,7 +43,7 @@
 
 #include <sys/cdefs.h>
 #if defined(__NetBSD__)
-__RCSID("$NetBSD: indent.c,v 1.79 2021/09/25 20:56:53 rillig Exp $");
+__RCSID("$NetBSD: indent.c,v 1.80 2021/09/25 21:42:43 rillig Exp $");
 #elif defined(__FreeBSD__)
 __FBSDID("$FreeBSD: head/usr.bin/indent/indent.c 340138 2018-11-04 19:24:49Z oshogbo $");
 #endif
@@ -427,32 +427,27 @@
        set_profile(profile_name);
 
     for (i = 1; i < argc; ++i) {
+       if (argv[i][0] == '-') {
+           set_option(argv[i]);
 
-       /*
-        * look thru args (if any) for changes to defaults
-        */
-       if (argv[i][0] != '-') {/* no flag on parameter */
-           if (input == NULL) {        /* we must have the input file */
-               in_name = argv[i];      /* remember name of input file */
-               input = fopen(in_name, "r");
-               if (input == NULL)      /* check for open error */
-                       err(1, "%s", in_name);
-               continue;
-           } else if (output == NULL) {        /* we have the output file */
-               out_name = argv[i];     /* remember name of output file */
-               if (strcmp(in_name, out_name) == 0) {   /* attempt to overwrite
-                                                        * the file */
-                   errx(1, "input and output files must be different");
-               }
-               output = fopen(out_name, "w");
-               if (output == NULL)     /* check for create error */
-                       err(1, "%s", out_name);
-               continue;
-           }
+       } else if (input == NULL) {
+           in_name = argv[i];
+           input = fopen(in_name, "r");
+           if (input == NULL)
+               err(1, "%s", in_name);
+
+       } else if (output == NULL) {
+           out_name = argv[i];
+           if (strcmp(in_name, out_name) == 0)
+               errx(1, "input and output files must be different");
+           output = fopen(out_name, "w");
+           if (output == NULL)
+               err(1, "%s", out_name);
+
+       } else
            errx(1, "unknown parameter: %s", argv[i]);
-       } else
-           set_option(argv[i]);
-    }                          /* end of for */
+    }
+
     if (input == NULL)
        input = stdin;
     if (output == NULL) {
diff -r 437fd70e5cb3 -r 71d593ffde9f usr.bin/indent/indent.h
--- a/usr.bin/indent/indent.h   Sat Sep 25 21:26:03 2021 +0000
+++ b/usr.bin/indent/indent.h   Sat Sep 25 21:42:43 2021 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: indent.h,v 1.23 2021/09/25 19:49:13 rillig Exp $       */
+/*     $NetBSD: indent.h,v 1.24 2021/09/25 21:42:43 rillig Exp $       */
 
 /*-
  * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
@@ -64,7 +64,7 @@
 void           fill_buffer(void);
 void           parse(token_type);
 void           process_comment(void);
-void           set_option(char *);
+void           set_option(const char *);
 void           set_profile(const char *);
 
 void           *xmalloc(size_t);



Home | Main Index | Thread Index | Old Index