]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
find sound files that are in the language directory itself (bug #4399)
authorRussell Bryant <russell@russellbryant.com>
Tue, 31 May 2005 03:36:45 +0000 (03:36 +0000)
committerRussell Bryant <russell@russellbryant.com>
Tue, 31 May 2005 03:36:45 +0000 (03:36 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/v1-0@5797 65c4cc65-6c06-0410-ace0-fbb531ad65f3

file.c

diff --git a/file.c b/file.c
index a91edc2c61d37f999ebc6727b4779dd09f51ef81..5b3dd11f3281e6a2b4bc375483ea3ae5a9e6b6d8 100755 (executable)
--- 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);
        }