From: Russell Bryant Date: Tue, 31 May 2005 03:36:45 +0000 (+0000) Subject: find sound files that are in the language directory itself (bug #4399) X-Git-Tag: 1.0.11.1~104 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=68206d08904ab9b75e4c23997b800bcd525c8eea;p=thirdparty%2Fasterisk.git find sound files that are in the language directory itself (bug #4399) git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/v1-0@5797 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/file.c b/file.c index a91edc2c61..5b3dd11f32 100755 --- a/file.c +++ b/file.c @@ -714,23 +714,31 @@ int ast_fileexists(char *filename, char *fmt, 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); }