mirror of
				https://github.com/asterisk/asterisk.git
				synced 2025-10-31 02:37:10 +00:00 
			
		
		
		
	Fix language handling (bug #4399)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@5783 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
		
							
								
								
									
										12
									
								
								file.c
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								file.c
									
									
									
									
									
								
							| @@ -729,23 +729,31 @@ int ast_fileexists(const char *filename, const char *fmt, const char *preflang) | ||||
| 			*c = '\0'; | ||||
| 			postfix = c+1; | ||||
| 			prefix = tmp; | ||||
| 			snprintf(filename2, sizeof(filename2), "%s/%s/%s", prefix, preflang, postfix); | ||||
| 		} else { | ||||
| 			postfix = tmp; | ||||
| 			prefix=""; | ||||
| 			snprintf(filename2, sizeof(filename2), "%s/%s", preflang, postfix); | ||||
| 		} | ||||
| 		snprintf(filename2, sizeof(filename2), "%s/%s/%s", prefix, preflang, postfix); | ||||
| 		res = ast_filehelper(filename2, NULL, fmt, ACTION_EXISTS); | ||||
| 		if (res < 1) { | ||||
| 			char *stringp=NULL; | ||||
| 			strncpy(lang2, preflang, sizeof(lang2)-1); | ||||
| 			stringp=lang2; | ||||
| 			strsep(&stringp, "_"); | ||||
| 			/* If language is a specific locality of a language (like es_MX), strip the locality and try again */ | ||||
| 			if (strcmp(lang2, preflang)) { | ||||
| 				snprintf(filename2, sizeof(filename2), "%s/%s/%s", prefix, lang2, postfix); | ||||
| 				if (ast_strlen_zero(prefix)) { | ||||
| 					snprintf(filename2, sizeof(filename2), "%s/%s", lang2, postfix); | ||||
| 				} else { | ||||
| 					snprintf(filename2, sizeof(filename2), "%s/%s/%s", prefix, lang2, postfix); | ||||
| 				} | ||||
| 				res = ast_filehelper(filename2, NULL, fmt, ACTION_EXISTS); | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	/* Fallback to no language (usually winds up being American English) */ | ||||
| 	if (res < 1) { | ||||
| 		res = ast_filehelper(filename, NULL, fmt, ACTION_EXISTS); | ||||
| 	} | ||||
|   | ||||
		Reference in New Issue
	
	Block a user