Index: tools/config.py
===================================================================
--- tools/config.py	(revision e4d540b9c02c4c2607e9446c3b12b4db4c9ba97b)
+++ tools/config.py	(revision 62bb73e0e1ca128b403d64d051cdc90441629f5a)
@@ -3,4 +3,5 @@
 # Copyright (c) 2006 Ondrej Palkovsky
 # Copyright (c) 2009 Martin Decky
+# Copyright (c) 2010 Jiri Svoboda
 # All rights reserved.
 #
@@ -40,10 +41,10 @@
 import xtui
 
-INPUT = sys.argv[1]
+RULES_FILE = sys.argv[1]
 MAKEFILE = 'Makefile.config'
 MACROS = 'config.h'
-PRECONF = 'defaults'
-
-def read_defaults(fname, defaults):
+PRESETS_DIR = 'defaults'
+
+def read_config(fname, config):
 	"Read saved values from last configuration run"
 	
@@ -53,9 +54,9 @@
 		res = re.match(r'^(?:#!# )?([^#]\w*)\s*=\s*(.*?)\s*$', line)
 		if (res):
-			defaults[res.group(1)] = res.group(2)
+			config[res.group(1)] = res.group(2)
 	
 	inf.close()
 
-def check_condition(text, defaults, ask_names):
+def check_condition(text, config, rules):
 	"Check that the condition specified on input line is True (only CNF and DNF is supported)"
 	
@@ -74,5 +75,5 @@
 			cond = cond[1:-1]
 		
-		inside = check_inside(cond, defaults, ctype)
+		inside = check_inside(cond, config, ctype)
 		
 		if (ctype == 'cnf') and (not inside):
@@ -86,5 +87,5 @@
 	return False
 
-def check_inside(text, defaults, ctype):
+def check_inside(text, config, ctype):
 	"Check for condition"
 	
@@ -103,8 +104,8 @@
 		condval = res.group(3)
 		
-		if (not condname in defaults):
+		if (not condname in config):
 			varval = ''
 		else:
-			varval = defaults[condname]
+			varval = config[condname]
 			if (varval == '*'):
 				varval = 'y'
@@ -128,6 +129,6 @@
 	return True
 
-def parse_config(fname, ask_names):
-	"Parse configuration file"
+def parse_rules(fname, rules):
+	"Parse rules file"
 	
 	inf = open(fname, 'r')
@@ -149,5 +150,5 @@
 			vartype = res.group(3)
 			
-			ask_names.append((varname, vartype, name, choices, cond))
+			rules.append((varname, vartype, name, choices, cond))
 			name = ''
 			choices = []
@@ -214,24 +215,24 @@
 ## Infer and verify configuration values.
 #
-# Augment @a defaults with values that can be inferred, purge invalid ones
+# Augment @a config with values that can be inferred, purge invalid ones
 # and verify that all variables have a value (previously specified or inferred).
 #
-# @param defaults	Configuration to work on
-# @param ask_names	Rules
-#
-# @return		True if configuration is complete and valid, False
-#			otherwise.
-#
-def infer_verify_choices(defaults, ask_names):
+# @param config	Configuration to work on
+# @param rules	Rules
+#
+# @return	True if configuration is complete and valid, False
+#		otherwise.
+#
+def infer_verify_choices(config, rules):
 	"Infer and verify configuration values."
 	
-	for varname, vartype, name, choices, cond in ask_names:
-		if ((cond) and (not check_condition(cond, defaults, ask_names))):
+	for varname, vartype, name, choices, cond in rules:
+		if ((cond) and (not check_condition(cond, config, rules))):
 			continue
 		
-		if (not varname in defaults):
+		if (not varname in config):
 			default = None
 		else:
-			default = defaults[varname]
+			default = config[varname]
 
 		if not rule_value_is_valid((varname, vartype, name, choices, cond), default):
@@ -241,7 +242,7 @@
 		if rdef != None:
 			default = rdef
-			defaults[varname] = rdef
-
-		if (not varname in defaults):
+			config[varname] = rdef
+
+		if (not varname in config):
 			return False
 	
@@ -336,5 +337,5 @@
 	return True
 
-def create_output(mkname, mcname, defaults, ask_names):
+def create_output(mkname, mcname, config, rules):
 	"Create output configuration"
 	
@@ -371,12 +372,12 @@
 	defs = 'CONFIG_DEFS ='
 	
-	for varname, vartype, name, choices, cond in ask_names:
-		if ((cond) and (not check_condition(cond, defaults, ask_names))):
+	for varname, vartype, name, choices, cond in rules:
+		if ((cond) and (not check_condition(cond, config, rules))):
 			continue
 		
-		if (not varname in defaults):
+		if (not varname in config):
 			default = ''
 		else:
-			default = defaults[varname]
+			default = config[varname]
 			if (default == '*'):
 				default = 'y'
@@ -411,5 +412,7 @@
 	return list
 
-def read_preconfigured(root, fname, screen, defaults):
+## Choose a profile and load configuration presets.
+#
+def load_presets(root, fname, screen, config):
 	options = []
 	opt2path = {}
@@ -445,28 +448,28 @@
 		return None
 	
-	read_defaults(opt2path[value][0], defaults)
+	read_config(opt2path[value][0], config)
 	if (opt2path[value][1] != None):
-		read_defaults(opt2path[value][1], defaults)
+		read_config(opt2path[value][1], config)
 
 def main():
-	defaults = {}
-	ask_names = []
-	
-	# Parse configuration file
-	parse_config(INPUT, ask_names)
-	
-	# Read defaults from previous run
+	config = {}
+	rules = []
+	
+	# Parse rules file
+	parse_rules(RULES_FILE, rules)
+	
+	# Read configuration from previous run
 	if os.path.exists(MAKEFILE):
-		read_defaults(MAKEFILE, defaults)
-	
-	# Default mode: only check defaults and regenerate configuration
+		read_config(MAKEFILE, config)
+	
+	# Default mode: only check values and regenerate configuration files
 	if ((len(sys.argv) >= 3) and (sys.argv[2] == 'default')):
-		if (infer_verify_choices(defaults, ask_names)):
-			create_output(MAKEFILE, MACROS, defaults, ask_names)
+		if (infer_verify_choices(config, rules)):
+			create_output(MAKEFILE, MACROS, config, rules)
 			return 0
 	
-	# Check mode: only check defaults
+	# Check mode: only check configuration
 	if ((len(sys.argv) >= 3) and (sys.argv[2] == 'check')):
-		if (infer_verify_choices(defaults, ask_names)):
+		if (infer_verify_choices(config, rules)):
 			return 0
 		return 1
@@ -478,8 +481,8 @@
 		while True:
 			
-			# Cancel out all defaults which have to be deduced
-			for varname, vartype, name, choices, cond in ask_names:
-				if ((vartype == 'y') and (varname in defaults) and (defaults[varname] == '*')):
-					defaults[varname] = None
+			# Cancel out all values which have to be deduced
+			for varname, vartype, name, choices, cond in rules:
+				if ((vartype == 'y') and (varname in config) and (config[varname] == '*')):
+					config[varname] = None
 			
 			options = []
@@ -489,8 +492,8 @@
 			options.append("  --- Load preconfigured defaults ... ")
 			
-			for rule in ask_names:
+			for rule in rules:
 				varname, vartype, name, choices, cond = rule
 				
-				if ((cond) and (not check_condition(cond, defaults, ask_names))):
+				if ((cond) and (not check_condition(cond, config, rules))):
 					continue
 				
@@ -498,8 +501,8 @@
 					position = cnt
 				
-				if (not varname in defaults):
+				if (not varname in config):
 					default = None
 				else:
-					default = defaults[varname]
+					default = config[varname]
 				
 				if not rule_value_is_valid(rule, default):
@@ -509,5 +512,5 @@
 				if rdef != None:
 					default = rdef
-					defaults[varname] = rdef
+					config[varname] = rdef
 
 				option = rule_get_option(rule, default)
@@ -528,5 +531,5 @@
 			
 			if (button == 'done'):
-				if (infer_verify_choices(defaults, ask_names)):
+				if (infer_verify_choices(config, rules)):
 					break
 				else:
@@ -535,5 +538,5 @@
 			
 			if (value == 0):
-				read_preconfigured(PRECONF, MAKEFILE, screen, defaults)
+				load_presets(PRESETS_DIR, MAKEFILE, screen, config)
 				position = 1
 				continue
@@ -545,20 +548,20 @@
 			(selname, seltype, name, choices) = opt2row[value]
 			
-			if (not selname in defaults):
+			if (not selname in config):
 				default = None
 			else:
-				default = defaults[selname]
+				default = config[selname]
 			
 			if (seltype == 'choice'):
-				defaults[selname] = subchoice(screen, name, choices, default)
+				config[selname] = subchoice(screen, name, choices, default)
 			elif ((seltype == 'y/n') or (seltype == 'n/y')):
-				if (defaults[selname] == 'y'):
-					defaults[selname] = 'n'
+				if (config[selname] == 'y'):
+					config[selname] = 'n'
 				else:
-					defaults[selname] = 'y'
+					config[selname] = 'y'
 	finally:
 		xtui.screen_done(screen)
 	
-	create_output(MAKEFILE, MACROS, defaults, ask_names)
+	create_output(MAKEFILE, MACROS, config, rules)
 	return 0
 
