From a3e3d7fd2de9cc1e8dfb530d72267b647fdf79cb Mon Sep 17 00:00:00 2001 From: imp Date: Mon, 3 Feb 2014 19:14:36 +0000 Subject: Convert the loop by gotos into a for loop to improve readability. I did this only with the inner loop for the token parsing, and not the outer loop which was understandable enough when the extra layers of looping went away... --- usr.sbin/config/mkmakefile.c | 246 +++++++++++++++++++++---------------------- 1 file changed, 122 insertions(+), 124 deletions(-) diff --git a/usr.sbin/config/mkmakefile.c b/usr.sbin/config/mkmakefile.c index 417ef68..e41fa87 100644 --- a/usr.sbin/config/mkmakefile.c +++ b/usr.sbin/config/mkmakefile.c @@ -373,133 +373,131 @@ next: else if (!eq(wd, "optional")) errout("%s: \"%s\" %s must be optional or standard\n", fname, wd, this); -nextparam: - wd = get_word(fp); - if (wd == (char *)EOF) - return; - if (wd == 0) { - compile += match; - if (compile && tp == NULL) { - if (std == 0 && nreqs == 0) - errout("%s: what is %s optional on?\n", - fname, this); - if (filetype == PROFILING && profiling == 0) - goto next; - tp = new_fent(); - tp->f_fn = this; - tp->f_type = filetype; - if (imp_rule) - tp->f_flags |= NO_IMPLCT_RULE; - if (no_obj) - tp->f_flags |= NO_OBJ; - if (before_depend) - tp->f_flags |= BEFORE_DEPEND; - if (nowerror) - tp->f_flags |= NOWERROR; - tp->f_compilewith = compilewith; - tp->f_depends = depends; - tp->f_clean = clean; - tp->f_warn = warning; - tp->f_objprefix = objprefix; + for (wd = get_word(fp); wd; wd = get_word(fp)) { + if (wd == (char *)EOF) + return; + if (eq(wd, "|")) { + if (nreqs == 0) + errout("%s: syntax error describing %s\n", + fname, this); + compile += match; + match = 1; + nreqs = 0; + continue; } - goto next; - } - if (eq(wd, "|")) { - if (nreqs == 0) - errout("%s: syntax error describing %s\n", - fname, this); - compile += match; - match = 1; - nreqs = 0; - goto nextparam; - } - if (eq(wd, "no-obj")) { - no_obj++; - goto nextparam; - } - if (eq(wd, "no-implicit-rule")) { - if (compilewith == 0) - errout("%s: alternate rule required when " - "\"no-implicit-rule\" is specified for %s.\n", - fname, this); - imp_rule++; - goto nextparam; - } - if (eq(wd, "before-depend")) { - before_depend++; - goto nextparam; - } - if (eq(wd, "dependency")) { - wd = get_quoted_word(fp); - if (wd == (char *)EOF || wd == 0) - errout("%s: %s missing dependency string.\n", - fname, this); - depends = ns(wd); - goto nextparam; - } - if (eq(wd, "clean")) { - wd = get_quoted_word(fp); - if (wd == (char *)EOF || wd == 0) - errout("%s: %s missing clean file list.\n", - fname, this); - clean = ns(wd); - goto nextparam; - } - if (eq(wd, "compile-with")) { - wd = get_quoted_word(fp); - if (wd == (char *)EOF || wd == 0) - errout("%s: %s missing compile command string.\n", - fname, this); - compilewith = ns(wd); - goto nextparam; - } - if (eq(wd, "warning")) { - wd = get_quoted_word(fp); - if (wd == (char *)EOF || wd == 0) - errout("%s: %s missing warning text string.\n", - fname, this); - warning = ns(wd); - goto nextparam; - } - if (eq(wd, "obj-prefix")) { - wd = get_quoted_word(fp); - if (wd == (char *)EOF || wd == 0) - errout("%s: %s missing object prefix string.\n", - fname, this); - objprefix = ns(wd); - goto nextparam; - } - if (eq(wd, "local")) { - filetype = LOCAL; - goto nextparam; - } - if (eq(wd, "no-depend")) { - filetype = NODEPEND; - goto nextparam; - } - if (eq(wd, "nowerror")) { - nowerror = 1; - goto nextparam; + if (eq(wd, "no-obj")) { + no_obj++; + continue; + } + if (eq(wd, "no-implicit-rule")) { + if (compilewith == 0) + errout("%s: alternate rule required when " + "\"no-implicit-rule\" is specified for" + " %s.\n", + fname, this); + imp_rule++; + continue; + } + if (eq(wd, "before-depend")) { + before_depend++; + continue; + } + if (eq(wd, "dependency")) { + wd = get_quoted_word(fp); + if (wd == (char *)EOF || wd == 0) + errout("%s: %s missing dependency string.\n", + fname, this); + depends = ns(wd); + continue; + } + if (eq(wd, "clean")) { + wd = get_quoted_word(fp); + if (wd == (char *)EOF || wd == 0) + errout("%s: %s missing clean file list.\n", + fname, this); + clean = ns(wd); + continue; + } + if (eq(wd, "compile-with")) { + wd = get_quoted_word(fp); + if (wd == (char *)EOF || wd == 0) + errout("%s: %s missing compile command string.\n", + fname, this); + compilewith = ns(wd); + continue; + } + if (eq(wd, "warning")) { + wd = get_quoted_word(fp); + if (wd == (char *)EOF || wd == 0) + errout("%s: %s missing warning text string.\n", + fname, this); + warning = ns(wd); + continue; + } + if (eq(wd, "obj-prefix")) { + wd = get_quoted_word(fp); + if (wd == (char *)EOF || wd == 0) + errout("%s: %s missing object prefix string.\n", + fname, this); + objprefix = ns(wd); + continue; + } + if (eq(wd, "nowerror")) { + nowerror = 1; + continue; + } + if (eq(wd, "local")) { + filetype = LOCAL; + continue; + } + if (eq(wd, "no-depend")) { + filetype = NODEPEND; + continue; + } + nreqs++; + if (eq(wd, "profiling-routine")) { + filetype = PROFILING; + continue; + } + if (std) + errout("standard entry %s has optional inclusion specifier %s!\n", + this, wd); + STAILQ_FOREACH(dp, &dtab, d_next) + if (eq(dp->d_name, wd)) { + dp->d_done |= DEVDONE; + goto nextparam; + } + SLIST_FOREACH(op, &opt, op_next) + if (op->op_value == 0 && opteq(op->op_name, wd)) + goto nextparam; + match = 0; +nextparam:; } - nreqs++; - /* Hack to allow "optional profiling-routine" to work */ - if (eq(wd, "profiling-routine")) { - filetype = PROFILING; - goto nextparam; + compile += match; + if (compile && tp == NULL) { + if (std == 0 && nreqs == 0) + errout("%s: what is %s optional on?\n", + fname, this); + if (filetype == PROFILING && profiling == 0) + goto next; + tp = new_fent(); + tp->f_fn = this; + tp->f_type = filetype; + if (imp_rule) + tp->f_flags |= NO_IMPLCT_RULE; + if (no_obj) + tp->f_flags |= NO_OBJ; + if (before_depend) + tp->f_flags |= BEFORE_DEPEND; + if (nowerror) + tp->f_flags |= NOWERROR; + tp->f_compilewith = compilewith; + tp->f_depends = depends; + tp->f_clean = clean; + tp->f_warn = warning; + tp->f_objprefix = objprefix; } - if (std) - errout("standard entry %s has optional inclusion specifier %s!\n", - this, wd); - STAILQ_FOREACH(dp, &dtab, d_next) - if (eq(dp->d_name, wd)) { - dp->d_done |= DEVDONE; - goto nextparam; - } - SLIST_FOREACH(op, &opt, op_next) - if (op->op_value == 0 && opteq(op->op_name, wd)) - goto nextparam; - match = 0; - goto nextparam; + goto next; } /* -- cgit v1.1