Source-Changes-HG archive

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

[src/trunk]: src/usr.bin/config If an option is selected, select the matching...



details:   https://anonhg.NetBSD.org/src/rev/164880285493
branches:  trunk
changeset: 802969:164880285493
user:      uebayasi <uebayasi%NetBSD.org@localhost>
date:      Fri Oct 10 10:22:49 2014 +0000

description:
If an option is selected, select the matching (lowercased) attribute.  Handle
dependencies too.

diffstat:

 usr.bin/config/main.c |  20 +++++++++++++++++++-
 1 files changed, 19 insertions(+), 1 deletions(-)

diffs (58 lines):

diff -r cfb5f54a8950 -r 164880285493 usr.bin/config/main.c
--- a/usr.bin/config/main.c     Fri Oct 10 10:16:19 2014 +0000
+++ b/usr.bin/config/main.c     Fri Oct 10 10:22:49 2014 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: main.c,v 1.60 2014/10/10 07:48:50 uebayasi Exp $       */
+/*     $NetBSD: main.c,v 1.61 2014/10/10 10:22:49 uebayasi Exp $       */
 
 /*
  * Copyright (c) 1992, 1993
@@ -531,6 +531,8 @@
        if (fs != NULL) {
                do_depends(fs->nv_ptr);
        }
+
+       CFGDBG(3, "depend `%s' searched", name);
 }
 
 static void
@@ -549,16 +551,25 @@
        struct attr *a;
 
        if (nv != NULL && (nv->nv_flags & NV_DEPENDED) == 0) {
+               const char *n = strtolower(nv->nv_name);
+
                nv->nv_flags |= NV_DEPENDED;
                /*
                 * If the dependency is an attribute, then just add
                 * it to the selecttab.
                 */
+               CFGDBG(3, "depend attr `%s'", nv->nv_name);
+               /* XXX Do uppercased attribute names exist? */
                if ((a = ht_lookup(attrtab, nv->nv_name)) != NULL) {
                        if (a->a_iattr)
                                panic("do_depend(%s): dep `%s' is an iattr",
                                    nv->nv_name, a->a_name);
                        expandattr(a, selectattr);
+               } else if ((a = ht_lookup(attrtab, n)) != NULL) {
+                       if (a->a_iattr)
+                               panic("do_depend(%s): dep `%s' is an iattr",
+                                   n, a->a_name);
+                       expandattr(a, selectattr);
                } else {
                        if (ht_lookup(opttab, nv->nv_name) == NULL)
                                addoption(nv->nv_name, NULL);
@@ -975,6 +986,13 @@
        n = strtolower(name);
        (void)ht_insert(selecttab, n, (void *)__UNCONST(n));
        CFGDBG(3, "option selected `%s'", n);
+
+       /*
+        * Select attribute if one exists.
+        */
+       struct attr *a;
+       if ((a = ht_lookup(attrtab, n)) != NULL)
+               selectattr(a);
 }
 
 void



Home | Main Index | Thread Index | Old Index