]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Merged revisions 232854 via svnmerge from
authorTilghman Lesher <tilghman@meg.abyt.es>
Thu, 3 Dec 2009 21:03:39 +0000 (21:03 +0000)
committerTilghman Lesher <tilghman@meg.abyt.es>
Thu, 3 Dec 2009 21:03:39 +0000 (21:03 +0000)
https://origsvn.digium.com/svn/asterisk/trunk

................
  r232854 | tilghman | 2009-12-03 14:47:07 -0600 (Thu, 03 Dec 2009) | 15 lines

  Merged revisions 232820 via svnmerge from
  https://origsvn.digium.com/svn/asterisk/branches/1.4

  ........
    r232820 | tilghman | 2009-12-03 14:10:19 -0600 (Thu, 03 Dec 2009) | 8 lines

    Deprecate "cz" in favor of "cs".
    Also, change the use of language codes so that language registers as a prefix,
    rather than an exact match.
    (closes issue #16272)
     Reported by: patrol-cz
     Patches:
           20091203__issue16272.diff.txt uploaded by tilghman (license 14)
  ........
................

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.6.1@232865 65c4cc65-6c06-0410-ace0-fbb531ad65f3

apps/app_voicemail.c

index 27c07628862f13fb01af44910db521aa84576e84..708d7052f5cc27695ea117acb497d7e55e7b6669 100644 (file)
@@ -6667,26 +6667,25 @@ static int play_message_datetime(struct ast_channel *chan, struct ast_vm_user *v
 #endif
        if (the_zone) {
                res = ast_say_date_with_format(chan, t, AST_DIGIT_ANY, chan->language, the_zone->msg_format, the_zone->timezone);
-       }
-       else if (!strcasecmp(chan->language,"pl"))       /* POLISH syntax */
-               res = ast_say_date_with_format(chan, t, AST_DIGIT_ANY, chan->language, "'vm-received' Q HM", NULL);
-       else if (!strcasecmp(chan->language,"se"))       /* SWEDISH syntax */
-               res = ast_say_date_with_format(chan, t, AST_DIGIT_ANY, chan->language, "'vm-received' dB 'digits/at' k 'and' M", NULL);
-       else if (!strcasecmp(chan->language,"no"))       /* NORWEGIAN syntax */
+       } else if (!strncasecmp(chan->language, "de", 2)) {     /* GERMAN syntax */
                res = ast_say_date_with_format(chan, t, AST_DIGIT_ANY, chan->language, "'vm-received' Q 'digits/at' HM", NULL);
-       else if (!strcasecmp(chan->language,"de"))       /* GERMAN syntax */
-               res = ast_say_date_with_format(chan, t, AST_DIGIT_ANY, chan->language, "'vm-received' Q 'digits/at' HM", NULL);
-       else if (!strcasecmp(chan->language,"nl"))      /* DUTCH syntax */
-               res = ast_say_date_with_format(chan, t, AST_DIGIT_ANY, chan->language, "'vm-received' q 'digits/nl-om' HM", NULL);
-       else if (!strcasecmp(chan->language,"it"))      /* ITALIAN syntax */
-               res = ast_say_date_with_format(chan, t, AST_DIGIT_ANY, chan->language, "'vm-received' q 'digits/at' 'digits/hours' k 'digits/e' M 'digits/minutes'", NULL);
-       else if (!strcasecmp(chan->language,"gr"))
+       } else if (!strncasecmp(chan->language, "gr", 2)) {     /* GREEK syntax */
                res = ast_say_date_with_format(chan, t, AST_DIGIT_ANY, chan->language, "'vm-received' q  H 'digits/kai' M ", NULL);
-       else if (!strcasecmp(chan->language,"pt_BR"))
+       } else if (!strncasecmp(chan->language, "it", 2)) {     /* ITALIAN syntax */
+               res = ast_say_date_with_format(chan, t, AST_DIGIT_ANY, chan->language, "'vm-received' q 'digits/at' 'digits/hours' k 'digits/e' M 'digits/minutes'", NULL);
+       } else if (!strncasecmp(chan->language, "nl", 2)) {     /* DUTCH syntax */
+               res = ast_say_date_with_format(chan, t, AST_DIGIT_ANY, chan->language, "'vm-received' q 'digits/nl-om' HM", NULL);
+       } else if (!strncasecmp(chan->language, "no", 2)) {     /* NORWEGIAN syntax */
+               res = ast_say_date_with_format(chan, t, AST_DIGIT_ANY, chan->language, "'vm-received' Q 'digits/at' HM", NULL);
+       } else if (!strncasecmp(chan->language, "pl", 2)) {     /* POLISH syntax */
+               res = ast_say_date_with_format(chan, t, AST_DIGIT_ANY, chan->language, "'vm-received' Q HM", NULL);
+       } else if (!strncasecmp(chan->language, "pt_BR", 5)) {  /* Brazillian PORTUGUESE syntax */
                res = ast_say_date_with_format(chan, t, AST_DIGIT_ANY, chan->language, "'vm-received' Ad 'digits/pt-de' B 'digits/pt-de' Y 'digits/pt-as' HM ", NULL);
-       else if (!strncasecmp(chan->language, "zh", 2)) /* CHINESE (Taiwan) syntax */
-               res = ast_say_date_with_format(chan, t, AST_DIGIT_ANY, chan->language, "qR 'vm-received'", NULL);               
-       else {
+       } else if (!strncasecmp(chan->language, "se", 2)) {     /* SWEDISH syntax */
+               res = ast_say_date_with_format(chan, t, AST_DIGIT_ANY, chan->language, "'vm-received' dB 'digits/at' k 'and' M", NULL);
+       } else if (!strncasecmp(chan->language, "zh", 2)) {     /* CHINESE (Taiwan) syntax */
+               res = ast_say_date_with_format(chan, t, AST_DIGIT_ANY, chan->language, "qR 'vm-received'", NULL);
+       } else {
                res = ast_say_date_with_format(chan, t, AST_DIGIT_ANY, chan->language, "'vm-received' q 'digits/at' IMp", NULL);
        }
 #if 0
@@ -6780,7 +6779,7 @@ static int play_message_duration(struct ast_channel *chan, struct vm_state *vms,
                res = wait_file2(chan, vms, "vm-duration");
 
                /* POLISH syntax */
-               if (!strcasecmp(chan->language, "pl")) {
+               if (!strncasecmp(chan->language, "pl", 2)) {
                        div_t num = div(durationm, 10);
 
                        if (durationm == 1) {
@@ -6819,7 +6818,7 @@ static int play_message(struct ast_channel *chan, struct ast_vm_user *vmu, struc
        struct ast_config *msg_cfg;
        struct ast_flags config_flags = { CONFIG_FLAG_NOCACHE };
 
-       vms->starting = 0; 
+       vms->starting = 0;
        make_file(vms->fn, sizeof(vms->fn), vms->curdir, vms->curmsg);
        adsi_message(chan, vms);
        if (!vms->curmsg)
@@ -6843,13 +6842,13 @@ static int play_message(struct ast_channel *chan, struct ast_vm_user *vmu, struc
 
        if (!res) {
                /* POLISH syntax */
-               if (!strcasecmp(chan->language, "pl")) { 
+               if (!strncasecmp(chan->language, "pl", 2)) {
                        if (vms->curmsg && (vms->curmsg != vms->lastmsg)) {
                                int ten, one;
                                char nextmsg[256];
                                ten = (vms->curmsg + 1) / 10;
                                one = (vms->curmsg + 1) % 10;
-                               
+
                                if (vms->curmsg < 20) {
                                        snprintf(nextmsg, sizeof(nextmsg), "digits/n-%d", vms->curmsg + 1);
                                        res = wait_file2(chan, vms, nextmsg);
@@ -6867,7 +6866,7 @@ static int play_message(struct ast_channel *chan, struct ast_vm_user *vmu, struc
                        if (!res)
                                res = wait_file2(chan, vms, "vm-message");
                /* HEBREW syntax */
-               } else if (!strcasecmp(chan->language, "he")) {
+               } else if (!strncasecmp(chan->language, "he", 2)) {
                        if (!vms->curmsg) {
                                res = wait_file2(chan, vms, "vm-message");
                                res = wait_file2(chan, vms, "vm-first");
@@ -6880,9 +6879,9 @@ static int play_message(struct ast_channel *chan, struct ast_vm_user *vmu, struc
                                res = ast_say_number(chan, vms->curmsg + 1, AST_DIGIT_ANY, chan->language, "f");
                        }
                } else {
-                       if (!strcasecmp(chan->language, "se")) /* SWEDISH syntax */
+                       if (!strncasecmp(chan->language, "se", 2)) { /* SWEDISH syntax */
                                res = wait_file2(chan, vms, "vm-meddelandet");  /* "message" */
-                       else /* DEFAULT syntax */ {
+                       } else { /* DEFAULT syntax */
                                res = wait_file2(chan, vms, "vm-message");
                        }
                        if (vms->curmsg && (vms->curmsg != vms->lastmsg)) {
@@ -7197,14 +7196,18 @@ static int vm_play_folder_name(struct ast_channel *chan, char *box)
 {
        int cmd;
 
-       if (!strcasecmp(chan->language, "it") || !strcasecmp(chan->language, "es") || !strcasecmp(chan->language, "pt") || !strcasecmp(chan->language, "pt_BR")) { /* Italian, Spanish, French or Portuguese syntax */
+       if (  !strncasecmp(chan->language, "it", 2) ||
+                 !strncasecmp(chan->language, "es", 2) ||
+                 !strncasecmp(chan->language, "pt", 2)) { /* Italian, Spanish, or Portuguese syntax */
                cmd = ast_play_and_wait(chan, "vm-messages"); /* "messages */
                return cmd ? cmd : ast_play_and_wait(chan, box);
-       } else if (!strcasecmp(chan->language, "gr")){
+       } else if (!strncasecmp(chan->language, "gr", 2)) {
                return vm_play_folder_name_gr(chan, box);
-       } else if (!strcasecmp(chan->language, "pl")){
+       } else if (!strncasecmp(chan->language, "he", 2)) {  /* Hebrew syntax */
+               return ast_play_and_wait(chan, box);
+       } else if (!strncasecmp(chan->language, "pl", 2)) {
                return vm_play_folder_name_pl(chan, box);
-       } else if (!strcasecmp(chan->language, "ua")){  /* Ukrainian syntax */
+       } else if (!strncasecmp(chan->language, "ua", 2)) {  /* Ukrainian syntax */
                return vm_play_folder_name_ua(chan, box);
        } else {  /* Default English */
                cmd = ast_play_and_wait(chan, box);
@@ -7212,18 +7215,18 @@ static int vm_play_folder_name(struct ast_channel *chan, char *box)
        }
 }
 
-/* GREEK SYNTAX 
+/* GREEK SYNTAX
        In greek the plural for old/new is
        different so we need the following files
-       We also need vm-denExeteMynhmata because 
+       We also need vm-denExeteMynhmata because
        this syntax is different.
-       
+
        -> vm-Olds.wav  : "Palia"
        -> vm-INBOXs.wav : "Nea"
        -> vm-denExeteMynhmata : "den exete mynhmata"
 */
-                                       
-       
+
+
 static int vm_intro_gr(struct ast_channel *chan, struct vm_state *vms)
 {
        int res = 0;
@@ -7980,7 +7983,7 @@ static int vm_intro_pt(struct ast_channel *chan,struct vm_state *vms)
  * vm-no        : no  ( no messages )
  */
 
-static int vm_intro_cz(struct ast_channel *chan,struct vm_state *vms)
+static int vm_intro_cs(struct ast_channel *chan, struct vm_state *vms)
 {
        int res;
        res = ast_play_and_wait(chan, "vm-youhave");
@@ -8094,39 +8097,46 @@ static int vm_intro(struct ast_channel *chan, struct ast_vm_user *vmu, struct vm
        }
 
        /* Play voicemail intro - syntax is different for different languages */
-       if (!strcasecmp(chan->language, "de")) {        /* GERMAN syntax */
+       if (0) {
+       } else if (!strncasecmp(chan->language, "cs", 2)) {  /* CZECH syntax */
+               return vm_intro_cs(chan, vms);
+       } else if (!strncasecmp(chan->language, "cz", 2)) {  /* deprecated CZECH syntax */
+               static int deprecation_warning = 0;
+               if (deprecation_warning++ % 10 == 0) {
+                       ast_log(LOG_WARNING, "cz is not a standard language code.  Please switch to using cs instead.\n");
+               }
+               return vm_intro_cs(chan, vms);
+       } else if (!strncasecmp(chan->language, "de", 2)) {  /* GERMAN syntax */
                return vm_intro_de(chan, vms);
-       } else if (!strcasecmp(chan->language, "es")) { /* SPANISH syntax */
+       } else if (!strncasecmp(chan->language, "es", 2)) {  /* SPANISH syntax */
                return vm_intro_es(chan, vms);
-       } else if (!strcasecmp(chan->language, "it")) { /* ITALIAN syntax */
-               return vm_intro_it(chan, vms);
-       } else if (!strcasecmp(chan->language, "fr")) { /* FRENCH syntax */
+       } else if (!strncasecmp(chan->language, "fr", 2)) {  /* FRENCH syntax */
                return vm_intro_fr(chan, vms);
-       } else if (!strcasecmp(chan->language, "nl")) { /* DUTCH syntax */
-               return vm_intro_nl(chan, vms);
-       } else if (!strcasecmp(chan->language, "pt")) { /* PORTUGUESE syntax */
-               return vm_intro_pt(chan, vms);
-       } else if (!strcasecmp(chan->language, "pt_BR")) {      /* BRAZILIAN PORTUGUESE syntax */
-               return vm_intro_pt_BR(chan, vms);
-       } else if (!strcasecmp(chan->language, "cz")) { /* CZECH syntax */
-               return vm_intro_cz(chan, vms);
-       } else if (!strcasecmp(chan->language, "gr")) { /* GREEK syntax */
+       } else if (!strncasecmp(chan->language, "gr", 2)) {  /* GREEK syntax */
                return vm_intro_gr(chan, vms);
-       } else if (!strcasecmp(chan->language, "pl")) { /* POLISH syntax */
+       } else if (!strncasecmp(chan->language, "he", 2)) {  /* HEBREW syntax */
+               return vm_intro_he(chan, vms);
+       } else if (!strncasecmp(chan->language, "it", 2)) {  /* ITALIAN syntax */
+               return vm_intro_it(chan, vms);
+       } else if (!strncasecmp(chan->language, "nl", 2)) {  /* DUTCH syntax */
+               return vm_intro_nl(chan, vms);
+       } else if (!strncasecmp(chan->language, "no", 2)) {  /* NORWEGIAN syntax */
+               return vm_intro_no(chan, vms);
+       } else if (!strncasecmp(chan->language, "pl", 2)) {  /* POLISH syntax */
                return vm_intro_pl(chan, vms);
-       } else if (!strcasecmp(chan->language, "se")) { /* SWEDISH syntax */
+       } else if (!strncasecmp(chan->language, "pt_BR", 5)) {  /* BRAZILIAN PORTUGUESE syntax */
+               return vm_intro_pt_BR(chan, vms);
+       } else if (!strncasecmp(chan->language, "pt", 2)) {  /* PORTUGUESE syntax */
+               return vm_intro_pt(chan, vms);
+       } else if (!strncasecmp(chan->language, "ru", 2)) {  /* RUSSIAN syntax */
+               return vm_intro_multilang(chan, vms, "n");
+       } else if (!strncasecmp(chan->language, "se", 2)) {  /* SWEDISH syntax */
                return vm_intro_se(chan, vms);
-       } else if (!strcasecmp(chan->language, "no")) { /* NORWEGIAN syntax */
-               return vm_intro_no(chan, vms);
-       } else if (!strcasecmp(chan->language, "ru")) { /* RUSSIAN syntax */
+       } else if (!strncasecmp(chan->language, "ua", 2)) {  /* UKRAINIAN syntax */
                return vm_intro_multilang(chan, vms, "n");
        } else if (!strncasecmp(chan->language, "zh", 2)) { /* CHINESE (Taiwan) syntax */
                return vm_intro_zh(chan, vms);
-       } else if (!strcasecmp(chan->language, "ua")) { /* UKRAINIAN syntax */
-               return vm_intro_multilang(chan, vms, "n");
-       } else if (!strcasecmp(chan->language, "he")) { /* HEBREW syntax */
-                return vm_intro_he(chan, vms);
-       } else {                                        /* Default to ENGLISH */
+       } else {                                             /* Default to ENGLISH */
                return vm_intro_en(chan, vms);
        }
 }
@@ -8731,19 +8741,19 @@ static int vm_browse_messages_zh(struct ast_channel *chan, struct vm_state *vms,
  */
 static int vm_browse_messages(struct ast_channel *chan, struct vm_state *vms, struct ast_vm_user *vmu)
 {
-       if (!strcasecmp(chan->language, "es")) {        /* SPANISH */
+       if (!strncasecmp(chan->language, "es", 2)) {         /* SPANISH */
                return vm_browse_messages_es(chan, vms, vmu);
-       } else if (!strcasecmp(chan->language, "it")) { /* ITALIAN */
+       } else if (!strncasecmp(chan->language, "gr", 2)) {  /* GREEK */
+               return vm_browse_messages_gr(chan, vms, vmu);
+       } else if (!strncasecmp(chan->language, "he", 2)) {  /* HEBREW */
+               return vm_browse_messages_he(chan, vms, vmu);
+       } else if (!strncasecmp(chan->language, "it", 2)) {  /* ITALIAN */
                return vm_browse_messages_it(chan, vms, vmu);
-       } else if (!strcasecmp(chan->language, "pt") || !strcasecmp(chan->language, "pt_BR")) { /* PORTUGUESE */
+       } else if (!strncasecmp(chan->language, "pt", 2)) {  /* PORTUGUESE */
                return vm_browse_messages_pt(chan, vms, vmu);
-       } else if (!strcasecmp(chan->language, "gr")){
-               return vm_browse_messages_gr(chan, vms, vmu);   /* GREEK */
        } else if (!strncasecmp(chan->language, "zh", 2)) {
                return vm_browse_messages_zh(chan, vms, vmu);   /* CHINESE (Taiwan) */
-       } else if (!strcasecmp(chan->language, "he")) {
-               return vm_browse_messages_he(chan, vms, vmu);   /* HEBREW */
-       } else {        /* Default to English syntax */
+       } else {                                             /* Default to English syntax */
                return vm_browse_messages_en(chan, vms, vmu);
        }
 }
@@ -9471,6 +9481,9 @@ static int vm_execmain(struct ast_channel *chan, void *data)
                case '*': /* Help */
                        if (!vms.starting) {
                                cmd = ast_play_and_wait(chan, "vm-onefor");
+                               if (!strncasecmp(chan->language, "he", 2)) {
+                                       cmd = ast_play_and_wait(chan, "vm-for");
+                               }
                                if (!cmd)
                                        cmd = vm_play_folder_name(chan, vms.vmbox);
                                if (!cmd)