diff options
author | Kyle Evans <kevans@FreeBSD.org> | 2018-07-10 00:33:31 +0000 |
---|---|---|
committer | Kyle Evans <kevans@FreeBSD.org> | 2018-07-10 00:33:31 +0000 |
commit | 5768da6c2154a324599b21418586eb04cbd6f1a7 (patch) | |
tree | 014a802fc382bfc5edaf3f7160072ee738681c82 /sys/kern/subr_hints.c | |
parent | e4098e39caf27f1bbca35178092cc2f7e2ad1890 (diff) | |
download | src-5768da6c2154a324599b21418586eb04cbd6f1a7.tar.gz src-5768da6c2154a324599b21418586eb04cbd6f1a7.zip |
subr_hints: Use goto/label instead of series of conditionals
Notes
Notes:
svn path=/head/; revision=336152
Diffstat (limited to 'sys/kern/subr_hints.c')
-rw-r--r-- | sys/kern/subr_hints.c | 48 |
1 files changed, 22 insertions, 26 deletions
diff --git a/sys/kern/subr_hints.c b/sys/kern/subr_hints.c index b44020173d9b..17f003cb7f26 100644 --- a/sys/kern/subr_hints.c +++ b/sys/kern/subr_hints.c @@ -124,7 +124,7 @@ res_find(char **hintp_cookie, int *line, int *startln, const char **ret_name, int *ret_namelen, int *ret_unit, const char **ret_resname, int *ret_resnamelen, const char **ret_value) { - int dyn_used = 0, fbacklvl = FBACK_MDENV, hit, i = 0, n = 0; + int dyn_used = 0, fbacklvl = FBACK_MDENV, i = 0, n = 0; char r_name[32]; int r_unit; char r_resname[32]; @@ -217,34 +217,30 @@ found: cp = hintp; while (cp) { - hit = 1; (*line)++; if (strncmp(cp, "hint.", 5) != 0) - hit = 0; - else - n = sscanf(cp, "hint.%32[^.].%d.%32[^=]=%127s", - r_name, &r_unit, r_resname, r_value); - /* We'll circumvent all of the checks if we already know */ - if (hit) { - if (n != 4) { - printf("CONFIG: invalid hint '%s'\n", cp); - p = strchr(cp, 'h'); - *p = 'H'; - hit = 0; - } - if (hit && startln && *startln >= 0 && *line < *startln) - hit = 0; - if (hit && name && strcmp(name, r_name) != 0) - hit = 0; - if (hit && unit && *unit != r_unit) - hit = 0; - if (hit && resname && strcmp(resname, r_resname) != 0) - hit = 0; - if (hit && value && strcmp(value, r_value) != 0) - hit = 0; - if (hit) - break; + goto nexthint; + n = sscanf(cp, "hint.%32[^.].%d.%32[^=]=%127s", r_name, &r_unit, + r_resname, r_value); + if (n != 4) { + printf("CONFIG: invalid hint '%s'\n", cp); + p = strchr(cp, 'h'); + *p = 'H'; + goto nexthint; } + if (startln && *startln >= 0 && *line < *startln) + goto nexthint; + if (name && strcmp(name, r_name) != 0) + goto nexthint; + if (unit && *unit != r_unit) + goto nexthint; + if (resname && strcmp(resname, r_resname) != 0) + goto nexthint; + if (value && strcmp(value, r_value) != 0) + goto nexthint; + /* Successfully found a hint matching all criteria */ + break; +nexthint: if (dyn_used) { cp = kenvp[++i]; if (cp == NULL) |