From f9ec2206c8fd7beb1cb407c308ea1400f7f39772 Mon Sep 17 00:00:00 2001 From: Ray Lai Date: Sat, 11 Mar 2006 07:04:54 +0000 Subject: Fixes the `optindx' might be used uninitialized in this function warning, fixes a spacing nit in a macro, and cleans up a very bad preprocessor abuse (``if LF_ISSET(OS_DEF)''!) optindx turns out to be the index number of the gigantic option list at the beginning of the file. All we need to do is set it before every ``goto err''. The first four are global options, which you can just set optindx to the second argument of o_set(). The last one is in a loop that uses cnt as the index. Since that is cnt's only use, I just removed cnt and used optindx instead. optindx is always updated and we use one less variable. ok miod, otto --- usr.bin/vi/common/options.c | 36 ++++++++++++++++++++++-------------- 1 file changed, 22 insertions(+), 14 deletions(-) (limited to 'usr.bin/vi/common') diff --git a/usr.bin/vi/common/options.c b/usr.bin/vi/common/options.c index ba78641f3c7..dd820aa1b0c 100644 --- a/usr.bin/vi/common/options.c +++ b/usr.bin/vi/common/options.c @@ -1,4 +1,4 @@ -/* $OpenBSD: options.c,v 1.12 2006/01/08 21:05:39 miod Exp $ */ +/* $OpenBSD: options.c,v 1.13 2006/03/11 07:04:53 ray Exp $ */ /*- * Copyright (c) 1991, 1993, 1994 @@ -291,7 +291,7 @@ opts_init(sp, oargs) ARGS *argv[2], a, b; OPTLIST const *op; u_long v; - int cnt, optindx; + int optindx; char *s, b1[1024]; a.bp = b1; @@ -306,7 +306,7 @@ opts_init(sp, oargs) (void)strlcpy(b1, (str), sizeof(b1)); \ a.len = strlen(b1); \ if (opts_set(sp, argv, NULL)) { \ - optindx = indx; \ + optindx = indx; \ goto err; \ } \ } @@ -315,17 +315,25 @@ opts_init(sp, oargs) * terminal, lines, columns first, they're used by other options. * Note, don't set the flags until we've set up the indirection. */ - if (o_set(sp, O_TERM, 0, NULL, GO_TERM)) + if (o_set(sp, O_TERM, 0, NULL, GO_TERM)) { + optindx = O_TERM; goto err; + } F_SET(&sp->opts[O_TERM], OPT_GLOBAL); - if (o_set(sp, O_LINES, 0, NULL, GO_LINES)) + if (o_set(sp, O_LINES, 0, NULL, GO_LINES)) { + optindx = O_LINES; goto err; + } F_SET(&sp->opts[O_LINES], OPT_GLOBAL); - if (o_set(sp, O_COLUMNS, 0, NULL, GO_COLUMNS)) + if (o_set(sp, O_COLUMNS, 0, NULL, GO_COLUMNS)) { + optindx = O_COLUMNS; goto err; + } F_SET(&sp->opts[O_COLUMNS], OPT_GLOBAL); - if (o_set(sp, O_SECURE, 0, NULL, GO_SECURE)) + if (o_set(sp, O_SECURE, 0, NULL, GO_SECURE)) { + optindx = O_SECURE; goto err; + } F_SET(&sp->opts[O_SECURE], OPT_GLOBAL); /* Initialize string values. */ @@ -399,20 +407,20 @@ opts_init(sp, oargs) * Set boolean default values, and copy all settings into the default * information. OS_NOFREE is set, we're copying, not replacing. */ - for (op = optlist, cnt = 0; op->name != NULL; ++op, ++cnt) + for (op = optlist, optindx = 0; op->name != NULL; ++op, ++optindx) switch (op->type) { case OPT_0BOOL: break; case OPT_1BOOL: - O_SET(sp, cnt); - O_D_SET(sp, cnt); + O_SET(sp, optindx); + O_D_SET(sp, optindx); break; case OPT_NUM: - o_set(sp, cnt, OS_DEF, NULL, O_VAL(sp, cnt)); + o_set(sp, optindx, OS_DEF, NULL, O_VAL(sp, optindx)); break; case OPT_STR: - if (O_STR(sp, cnt) != NULL && o_set(sp, cnt, - OS_DEF | OS_NOFREE | OS_STRDUP, O_STR(sp, cnt), 0)) + if (O_STR(sp, optindx) != NULL && o_set(sp, optindx, + OS_DEF | OS_NOFREE | OS_STRDUP, O_STR(sp, optindx), 0)) goto err; break; default: @@ -766,7 +774,7 @@ o_set(sp, opt, flags, str, val) } /* Free the previous string, if requested, and set the value. */ - if LF_ISSET(OS_DEF) + if (LF_ISSET(OS_DEF)) if (LF_ISSET(OS_STR | OS_STRDUP)) { if (!LF_ISSET(OS_NOFREE) && op->o_def.str != NULL) free(op->o_def.str); -- cgit v1.2.3