diff --git a/asterisk.c b/asterisk.c
index aa235c7d02add0db6cbd0e6e6473af448474051b..ad92a5c0f2b23fbfc0e2f96ed7f0339e456a781c 100644
--- a/asterisk.c
+++ b/asterisk.c
@@ -2190,8 +2190,8 @@ static void ast_readconfig(void)
 	if (!cfg) {
 		return;
 	}
-	v = ast_variable_browse(cfg, "files");
-	while (v) {
+
+	for (v = ast_variable_browse(cfg, "files"); v; v = v->next) {
 		if (!strcasecmp(v->name, "astctlpermissions")) {
 			ast_copy_string(ast_config_AST_CTL_PERMISSIONS, v->value, sizeof(ast_config_AST_CTL_PERMISSIONS));
 		} else if (!strcasecmp(v->name, "astctlowner")) {
@@ -2201,10 +2201,9 @@ static void ast_readconfig(void)
 		} else if (!strcasecmp(v->name, "astctl")) {
 			ast_copy_string(ast_config_AST_CTL, v->value, sizeof(ast_config_AST_CTL));
 		}
-		v = v->next;
 	}
-	v = ast_variable_browse(cfg, "directories");
-	while(v) {
+
+	for (v = ast_variable_browse(cfg, "directories"); v; v = v->next) {
 		if (!strcasecmp(v->name, "astetcdir")) {
 			ast_copy_string(ast_config_AST_CONFIG_DIR, v->value, sizeof(ast_config_AST_CONFIG_DIR));
 		} else if (!strcasecmp(v->name, "astspooldir")) {
@@ -2226,13 +2225,10 @@ static void ast_readconfig(void)
 			ast_copy_string(ast_config_AST_RUN_DIR, v->value, sizeof(ast_config_AST_RUN_DIR));
 		} else if (!strcasecmp(v->name, "astmoddir")) {
 			ast_copy_string(ast_config_AST_MODULE_DIR, v->value, sizeof(ast_config_AST_MODULE_DIR));
-		} else if (!strcasecmp(v->name, "languageprefix")) {
-			ast_language_is_prefix = ast_true(v->value);
 		}
-		v = v->next;
 	}
-	v = ast_variable_browse(cfg, "options");
-	while(v) {
+
+	for (v = ast_variable_browse(cfg, "options"); v; v = v->next) {
 		/* verbose level (-v at startup) */
 		if (!strcasecmp(v->name, "verbose")) {
 			option_verbose = atoi(v->value);
@@ -2311,8 +2307,9 @@ static void ast_readconfig(void)
 			ast_copy_string(ast_config_AST_RUN_GROUP, v->value, sizeof(ast_config_AST_RUN_GROUP));
 		} else if (!strcasecmp(v->name, "systemname")) {
 			ast_copy_string(ast_config_AST_SYSTEM_NAME, v->value, sizeof(ast_config_AST_SYSTEM_NAME));
+		} else if (!strcasecmp(v->name, "languageprefix")) {
+			ast_language_is_prefix = ast_true(v->value);
 		}
-		v = v->next;
 	}
 	ast_config_destroy(cfg);
 }
diff --git a/doc/asterisk-conf.txt b/doc/asterisk-conf.txt
index 72c81098a1dd5ffa11f282246b2ed8ba4d7809c5..a838bc561fe00a9a163a73d4b89d70a6ba336971 100644
--- a/doc/asterisk-conf.txt
+++ b/doc/asterisk-conf.txt
@@ -65,6 +65,10 @@ maxcalls = 255					; The maximum number of concurrent calls you want to allow
 execincludes = yes | no 			; Allow #exec entries in configuration files
 dontwarn = yes | no				; Don't over-inform the Asterisk sysadm, he's a guru
 systemname = <a_string>				; System name. Used to prefix CDR uniqueid and to fill ${SYSTEMNAME}
+languageprefix = yes | no			; Should language code be last component of sound file name or first?
+	       	       				; when off, sound files are searched as <path>/<lang>/<file>
+						; when on, sound files are search as <lang>/<path>/<file>
+						; (only affects relative paths for sound files)
 
 [files]
 ; Changing the following lines may compromise your security