linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [KCONFIG] Optional choice values always get reset
@ 2003-07-12  7:30 Herbert Xu
  2003-07-14 20:04 ` Roman Zippel
  0 siblings, 1 reply; 2+ messages in thread
From: Herbert Xu @ 2003-07-12  7:30 UTC (permalink / raw)
  To: zippel; +Cc: Linux Kernel Mailing List

[-- Attachment #1: Type: text/plain, Size: 612 bytes --]

Hi:

As of 2.5.74, make oldconfig always disables existing optional choices
even if they were selected previously.  For example, if all the EICON
ISDN drivers were selected as modules, then make oldconfig will turn
them off.

Part of the problem is that the choice value itself is computed before
the SYMBOL_NEW flag is turned off.  This patch addresses that particular
problem.

Cheers,
-- 
Debian GNU/Linux 3.0 is out! ( http://www.debian.org/ )
Email:  Herbert Xu ~{PmV>HI~} <herbert@gondor.apana.org.au>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt

[-- Attachment #2: p --]
[-- Type: text/plain, Size: 1889 bytes --]

Index: kernel-source-2.5/scripts/kconfig/confdata.c
===================================================================
RCS file: /home/gondolin/herbert/src/CVS/debian/kernel-source-2.5/scripts/kconfig/confdata.c,v
retrieving revision 1.1.1.3
diff -u -r1.1.1.3 confdata.c
--- kernel-source-2.5/scripts/kconfig/confdata.c	17 Jun 2003 04:20:26 -0000	1.1.1.3
+++ kernel-source-2.5/scripts/kconfig/confdata.c	12 Jul 2003 07:24:35 -0000
@@ -149,7 +149,7 @@
 			sym = sym_find(line + 7);
 			if (!sym) {
 				fprintf(stderr, "%s:%d: trying to assign nonexistent symbol %s\n", name, lineno, line + 7);
-				break;
+				continue;
 			}
 			switch (sym->type) {
 			case S_TRISTATE:
@@ -197,29 +197,28 @@
 			default:
 				;
 			}
-			if (sym_is_choice_value(sym)) {
-				struct symbol *cs = prop_get_symbol(sym_get_choice_prop(sym));
-				switch (sym->user.tri) {
-				case mod:
-					if (cs->user.tri == yes)
-						/* warn? */;
-					break;
-				case yes:
-					if (cs->user.tri != no)
-						/* warn? */;
-					cs->user.val = sym;
-					break;
-				case no:
-					break;
-				}
-				cs->user.tri = sym->user.tri;
-			}
-			break;
-		case '\n':
 			break;
 		default:
 			continue;
 		}
+		if (sym_is_choice_value(sym)) {
+			struct symbol *cs = prop_get_symbol(sym_get_choice_prop(sym));
+			switch (sym->user.tri) {
+			case mod:
+				if (cs->user.tri == yes)
+					/* warn? */;
+				break;
+			case yes:
+				if (cs->user.tri != no)
+					/* warn? */;
+				cs->user.val = sym;
+				break;
+			case no:
+				break;
+			}
+			cs->user.tri = E_OR(cs->user.tri, sym->user.tri);
+			cs->flags &= ~SYMBOL_NEW;
+		}
 	}
 	fclose(in);
 
@@ -241,7 +240,6 @@
 		if (!sym_is_choice(sym))
 			continue;
 		prop = sym_get_choice_prop(sym);
-		sym->flags &= ~SYMBOL_NEW;
 		for (e = prop->expr; e; e = e->left.expr)
 			if (e->right.sym->visible != no)
 				sym->flags |= e->right.sym->flags & SYMBOL_NEW;

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2003-07-14 19:52 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2003-07-12  7:30 [KCONFIG] Optional choice values always get reset Herbert Xu
2003-07-14 20:04 ` Roman Zippel

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).