Index: main/say.c =================================================================== --- main/say.c (revision 192165) +++ main/say.c (working copy) @@ -429,46 +429,46 @@ /* Called from AGI */ static int say_number_full(struct ast_channel *chan, int num, const char *ints, const char *language, const char *options, int audiofd, int ctrlfd) { - if (!strcasecmp(language, "en") ) { /* English syntax */ + if (!strcasecmp(language, "en_GB") ) { /* British syntax */ + return(ast_say_number_full_en_GB(chan, num, ints, language, audiofd, ctrlfd)); + } else if (!strncasecmp(language, "en", 2)) { /* English syntax */ return(ast_say_number_full_en(chan, num, ints, language, audiofd, ctrlfd)); - } else if (!strcasecmp(language, "cz") ) { /* Czech syntax */ + } else if (!strncasecmp(language, "cz", 2)) { /* Czech syntax */ return(ast_say_number_full_cz(chan, num, ints, language, options, audiofd, ctrlfd)); - } else if (!strcasecmp(language, "da") ) { /* Danish syntax */ + } else if (!strncasecmp(language, "da", 2)) { /* Danish syntax */ return(ast_say_number_full_da(chan, num, ints, language, options, audiofd, ctrlfd)); - } else if (!strcasecmp(language, "de") ) { /* German syntax */ + } else if (!strncasecmp(language, "de", 2)) { /* German syntax */ return(ast_say_number_full_de(chan, num, ints, language, options, audiofd, ctrlfd)); - } else if (!strcasecmp(language, "en_GB") ) { /* British syntax */ - return(ast_say_number_full_en_GB(chan, num, ints, language, audiofd, ctrlfd)); - } else if (!strcasecmp(language, "no") ) { /* Norwegian syntax */ + } else if (!strncasecmp(language, "no", 2)) { /* Norwegian syntax */ return(ast_say_number_full_no(chan, num, ints, language, options, audiofd, ctrlfd)); - } else if (!strcasecmp(language, "es") || !strcasecmp(language, "mx")) { /* Spanish syntax */ + } else if (!strncasecmp(language, "es", 2) || !strncasecmp(language, "mx", 2)) { /* Spanish syntax */ return(ast_say_number_full_es(chan, num, ints, language, options, audiofd, ctrlfd)); - } else if (!strcasecmp(language, "fr") ) { /* French syntax */ + } else if (!strncasecmp(language, "fr", 2)) { /* French syntax */ return(ast_say_number_full_fr(chan, num, ints, language, options, audiofd, ctrlfd)); - } else if (!strcasecmp(language, "he") ) { /* Hebrew syntax */ + } else if (!strncasecmp(language, "ge", 2)) { /* Georgian syntax */ + return(ast_say_number_full_ge(chan, num, ints, language, options, audiofd, ctrlfd)); + } else if (!strncasecmp(language, "gr", 2)) { /* Greek syntax */ + return(ast_say_number_full_gr(chan, num, ints, language, audiofd, ctrlfd)); + } else if (!strncasecmp(language, "he", 2)) { /* Hebrew syntax */ return(ast_say_number_full_he(chan, num, ints, language, options, audiofd, ctrlfd)); - } else if (!strcasecmp(language, "hu") ) { /* Hungarian syntax */ + } else if (!strncasecmp(language, "hu", 2)) { /* Hungarian syntax */ return(ast_say_number_full_hu(chan, num, ints, language, audiofd, ctrlfd)); - } else if (!strcasecmp(language, "it") ) { /* Italian syntax */ + } else if (!strncasecmp(language, "it", 2)) { /* Italian syntax */ return(ast_say_number_full_it(chan, num, ints, language, audiofd, ctrlfd)); - } else if (!strcasecmp(language, "nl") ) { /* Dutch syntax */ + } else if (!strncasecmp(language, "nl", 2)) { /* Dutch syntax */ return(ast_say_number_full_nl(chan, num, ints, language, audiofd, ctrlfd)); - } else if (!strcasecmp(language, "pl") ) { /* Polish syntax */ + } else if (!strncasecmp(language, "pl", 2)) { /* Polish syntax */ return(ast_say_number_full_pl(chan, num, ints, language, options, audiofd, ctrlfd)); - } else if (!strcasecmp(language, "pt") || !strcasecmp(language, "pt_BR")) { /* Portuguese syntax */ + } else if (!strncasecmp(language, "pt", 2)) { /* Portuguese syntax */ return(ast_say_number_full_pt(chan, num, ints, language, options, audiofd, ctrlfd)); - } else if (!strcasecmp(language, "se") ) { /* Swedish syntax */ + } else if (!strncasecmp(language, "ru", 2)) { /* Russian syntax */ + return(ast_say_number_full_ru(chan, num, ints, language, options, audiofd, ctrlfd)); + } else if (!strncasecmp(language, "se", 2)) { /* Swedish syntax */ return(ast_say_number_full_se(chan, num, ints, language, options, audiofd, ctrlfd)); - } else if (!strcasecmp(language, "tw") || !strcasecmp(language, "zh") ) { /* Taiwanese / Chinese syntax */ + } else if (!strncasecmp(language, "th", 2)) { /* Thai syntax */ + return(ast_say_number_full_th(chan, num, ints, language, audiofd, ctrlfd)); + } else if (!strncasecmp(language, "tw", 2) || !strncasecmp(language, "zh", 2) ) { /* Taiwanese / Chinese syntax */ return(ast_say_number_full_tw(chan, num, ints, language, audiofd, ctrlfd)); - } else if (!strcasecmp(language, "gr") ) { /* Greek syntax */ - return(ast_say_number_full_gr(chan, num, ints, language, audiofd, ctrlfd)); - } else if (!strcasecmp(language, "ru") ) { /* Russian syntax */ - return(ast_say_number_full_ru(chan, num, ints, language, options, audiofd, ctrlfd)); - } else if (!strcasecmp(language, "th") ) { /* Thai syntax */ - return(ast_say_number_full_th(chan, num, ints, language, audiofd, ctrlfd)); - } else if (!strcasecmp(language, "ge") ) { /* Georgian syntax */ - return(ast_say_number_full_ge(chan, num, ints, language, options, audiofd, ctrlfd)); } /* Default to english */ @@ -7799,13 +7799,13 @@ char *temp; int temp_len; const char *ending; - if (!strcasecmp(chan->language, "ru")) { /* Russian */ + if (!strncasecmp(chan->language, "ru", 2)) { /* Russian */ ending = counted_noun_ending_slavic(num); - } else if(!strcasecmp(chan->language, "ua")) { /* Ukrainian */ + } else if (!strncasecmp(chan->language, "ua", 2)) { /* Ukrainian */ ending = counted_noun_ending_slavic(num); - } else if(!strcasecmp(chan->language, "ua")) { /* Polish */ + } else if (!strncasecmp(chan->language, "pl", 2)) { /* Polish */ ending = counted_noun_ending_slavic(num); - } else { /* English and default */ + } else { /* English and default */ ending = counted_noun_ending_en(num); } temp = alloca((temp_len = (strlen(noun) + strlen(ending) + 1))); @@ -7822,7 +7822,7 @@ */ static const char *counted_adjective_ending_ru(int num, const char gender[]) { - if (num < 0) { + if (num < 0) { num *= -1; } num %= 100; /* never pay attention to more than two digits */ @@ -7841,13 +7841,13 @@ char *temp; int temp_len; const char *ending; - if (!strcasecmp(chan->language, "ru")) { /* Russian */ + if (!strncasecmp(chan->language, "ru", 2)) { /* Russian */ ending = counted_adjective_ending_ru(num, gender); - } else if (!strcasecmp(chan->language, "ua")) { /* Ukrainian */ + } else if (!strncasecmp(chan->language, "ua", 2)) { /* Ukrainian */ ending = counted_adjective_ending_ru(num, gender); - } else if (!strcasecmp(chan->language, "pl")) { /* Polish */ + } else if (!strncasecmp(chan->language, "pl", 2)) { /* Polish */ ending = counted_adjective_ending_ru(num, gender); - } else { /* English and default */ + } else { /* English and default */ ending = ""; } temp = alloca((temp_len = (strlen(adjective) + strlen(ending) + 1)));