[svn-commits] tilghman: trunk r214071 - in /trunk: ./ main/say.c

SVN commits to the Digium repositories svn-commits at lists.digium.com
Tue Aug 25 14:32:52 CDT 2009


Author: tilghman
Date: Tue Aug 25 14:32:48 2009
New Revision: 214071

URL: http://svn.asterisk.org/svn-view/asterisk?view=rev&rev=214071
Log:
Merged revisions 214068-214069 via svnmerge from 
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
  r214068 | tilghman | 2009-08-25 14:26:50 -0500 (Tue, 25 Aug 2009) | 6 lines
  
  Fix pronunciation of German dates.
  (closes issue #15273)
   Reported by: Benjamin Kluck
   Patches: 
         say_c.patch uploaded by Benjamin Kluck (license 803)
........
  r214069 | tilghman | 2009-08-25 14:28:42 -0500 (Tue, 25 Aug 2009) | 2 lines
  
  I should always compile before committing...
........

Modified:
    trunk/   (props changed)
    trunk/main/say.c

Propchange: trunk/
------------------------------------------------------------------------------
Binary property 'branch-1.4-merged' - no diff available.

Modified: trunk/main/say.c
URL: http://svn.asterisk.org/svn-view/asterisk/trunk/main/say.c?view=diff&rev=214071&r1=214070&r2=214071
==============================================================================
--- trunk/main/say.c (original)
+++ trunk/main/say.c Tue Aug 25 14:32:48 2009
@@ -3781,6 +3781,12 @@
 	return res;
 }
 
+static char next_item(const char *format)
+{
+	const char *next = ast_skip_blanks(format);
+	return *next;
+}
+
 /* Danish syntax */
 int ast_say_date_with_format_da(struct ast_channel *chan, time_t t, const char *ints, const char *lang, const char *format, const char *tzone)
 {
@@ -3875,14 +3881,14 @@
 				/* FALLTRHU */
 			case 'k':
 				/* 24-Hour */
-				res = ast_say_number(chan, tm.tm_hour, ints, lang, (char *) NULL);	
+				res = ast_say_number(chan, tm.tm_hour, ints, lang, (char *) NULL);
 				break;
 			case 'M':
 				/* Minute */
-				if (tm.tm_min > 0 || format[offset+ 1 ] == 'S' ) { /* zero 'digits/0' only if seconds follow (kind of a hack) */
-					res = ast_say_number(chan, tm.tm_min, ints, lang, "f");	
-				}
-				if ( !res && format[offset + 1] == 'S' ) { /* minutes only if seconds follow (kind of a hack) */
+				if (tm.tm_min > 0 || next_item(&format[offset + 1]) == 'S') { /* zero 'digits/0' only if seconds follow */
+					res = ast_say_number(chan, tm.tm_min, ints, lang, "f");
+				}
+				if (!res && next_item(&format[offset + 1]) == 'S') { /* minutes only if seconds follow */
 					if (tm.tm_min == 1) {
 						res = wait_file(chan, ints, "digits/minute", lang);
 					} else {
@@ -4079,10 +4085,13 @@
 				break;
 			case 'M':
 				/* Minute */
-				if (tm.tm_min > 0 || format[offset+ 1 ] == 'S' ) { /* zero 'digits/0' only if seconds follow (kind of a hack) */
-					res = ast_say_number(chan, tm.tm_min, ints, lang, "f");	
-				}
-				if ( !res && format[offset + 1] == 'S' ) { /* minutes only if seconds follow (kind of a hack) */
+				if (next_item(&format[offset + 1]) == 'S') { /* zero 'digits/0' only if seconds follow */
+					res = ast_say_number(chan, tm.tm_min, ints, lang, "f"); /* female only if we say digits/minutes */
+				} else if (tm.tm_min > 0) {
+					res = ast_say_number(chan, tm.tm_min, ints, lang, (char *) NULL);
+				}
+
+				if (!res && next_item(&format[offset + 1]) == 'S') { /* minutes only if seconds follow */
 					if (tm.tm_min == 1) {
 						res = wait_file(chan, ints, "digits/minute", lang);
 					} else {
@@ -4160,7 +4169,7 @@
 				if (!res) {
 					res = ast_say_number(chan, tm.tm_sec, ints, lang, "f");	
 					if (!res) {
-						res = wait_file(chan, ints, "digits/seconds", lang);
+						res = wait_file(chan, ints, tm.tm_sec == 1 ? "digits/second" : "digits/seconds", lang);
 					}
 				}
 				break;




More information about the svn-commits mailing list