Revision
17518
Author
steveu
Date
2010-05-10 20:59:33 -0500 (Mon, 10 May 2010)

Log Message

Number reading should now be OK for the whole range of integers for
Cantonese and Mandarin

Modified Paths

Diff

Modified: freeswitch/trunk/src/mod/say/mod_say_zh/mod_say_zh.c (17517 => 17518)


--- freeswitch/trunk/src/mod/say/mod_say_zh/mod_say_zh.c	2010-05-10 18:07:34 UTC (rev 17517)
+++ freeswitch/trunk/src/mod/say/mod_say_zh/mod_say_zh.c	2010-05-11 01:59:33 UTC (rev 17518)
@@ -111,19 +111,26 @@
 				switch (i) {
 				case 0:
 					/* Billions column */
-					if (digits[i] != '0') {
-						if (digits[i] != '1')
+					if (digits[0] != '0') {
+						if (digits[0] != '1')
 							say_file("digits/%c.wav", digits[i]);
 						say_file("digits/10.wav");
 					}
 					break;
 				case 1:
-					/* Hundred millions columns */
+					/* Hundred millions column */
 					if (digits[i] != '0')
 						say_file("digits/%c.wav", digits[i]);
 					if (memcmp(digits, "00", 2) != 0)
 						say_file("digits/100000000.wav");
 					break;
+				case 5:
+					/* Ten thousands column */
+					if (digits[i] != '0')
+						say_file("digits/%c.wav", digits[i]);
+					if (memcmp(digits + 2, "0000", 4) != 0)
+						say_file("digits/10000.wav");
+					break;
 				case 2:
 				case 6:
 					/* Ten millions or thousands column */
@@ -138,49 +145,27 @@
 					if (digits[i] != '0') {
 						say_file("digits/%c.wav", digits[i]);
 						say_file("digits/100.wav");
-					}
-					break;
-				case 4:
-					/* Hundred thousands column */
-					if (digits[i] != '0') {
-						if (digits[i] != '1' || memcmp(digits, "0000", 4) != 0) {
-							say_file("digits/%c.wav", digits[i]);
-						}
 					} else {
-						if (digits[i + 1] != '0' && memcmp(digits, "0000", 4) != 0) {
-							say_file("digits/%c.wav", digits[i]);
-						}
+						if (digits[i + 1] != '0'  &&  memcmp(digits, "00000000", i) != 0)
+							say_file("digits/0.wav");
 					}
-					if (digits[i] != '0')
-						say_file("digits/10.wav");
 					break;
-
-				case 5:
-					/* Ten thousands column */
-					if (digits[i] != '0') {
-						say_file("digits/%c.wav", digits[i]);
-						if (memcmp(digits + 2, "0000", 4) != 0)
-							say_file("digits/10000.wav");
-					}
-					break;
+				case 4:
 				case 8:
-					/* Tens column */
+					/* Hundred thousands or tens column */
 					if (digits[i] != '0') {
-						if (digits[i] != '1' || memcmp(digits, "00000000", 8) != 0) {
+						if (digits[i] != '1')
 							say_file("digits/%c.wav", digits[i]);
-						}
+						say_file("digits/10.wav");
 					} else {
-						if (digits[9] != '0' && memcmp(digits, "00000000", 8) != 0) {
-							say_file("digits/%c.wav", digits[i]);
-						}
+						if (digits[i + 1] != '0'  &&  memcmp(digits, "00000000", i) != 0)
+							say_file("digits/0.wav");
 					}
-					if (digits[8] != '0')
-						say_file("digits/10.wav");
 					break;
 				case 9:
 					/* Units column */
 					if (digits[9] != '0')
-						say_file("digits/%c.wav", digits[i]);
+						say_file("digits/%c.wav", digits[9]);
 					break;
 				}
 			}