mirror of
https://github.com/asterisk/asterisk.git
synced 2025-10-31 18:55:19 +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