[asterisk-commits] oej: branch oej/pinepeach r214351 - in /team/oej/pinepeach: ./ main/
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Thu Aug 27 03:47:23 CDT 2009
Author: oej
Date: Thu Aug 27 03:47:19 2009
New Revision: 214351
URL: http://svn.asterisk.org/svn-view/asterisk?view=rev&rev=214351
Log:
Staying up to date
Modified:
team/oej/pinepeach/ (props changed)
team/oej/pinepeach/Makefile
team/oej/pinepeach/main/channel.c
team/oej/pinepeach/main/pbx.c
team/oej/pinepeach/main/say.c
Propchange: team/oej/pinepeach/
------------------------------------------------------------------------------
--- automerge (original)
+++ automerge Thu Aug 27 03:47:19 2009
@@ -1,1 +1,1 @@
-Note to myself: Try to understand chan_sip
+http://www.codename-pineapple.org/
Propchange: team/oej/pinepeach/
------------------------------------------------------------------------------
--- svnmerge-integrated (original)
+++ svnmerge-integrated Thu Aug 27 03:47:19 2009
@@ -1,1 +1,1 @@
-/branches/1.4:1-213872
+/branches/1.4:1-214350
Modified: team/oej/pinepeach/Makefile
URL: http://svn.asterisk.org/svn-view/asterisk/team/oej/pinepeach/Makefile?view=diff&rev=214351&r1=214350&r2=214351
==============================================================================
--- team/oej/pinepeach/Makefile (original)
+++ team/oej/pinepeach/Makefile Thu Aug 27 03:47:19 2009
@@ -671,7 +671,7 @@
if [ -z "$(DESTDIR)" ]; then /sbin/chkconfig --add asterisk; fi; \
elif [ -f /etc/debian_version ]; then \
$(INSTALL) -m 755 contrib/init.d/rc.debian.asterisk $(DESTDIR)/etc/init.d/asterisk; \
- if [ -z "$(DESTDIR)" ]; then /usr/sbin/update-rc.d asterisk start 50 2 3 4 5 . stop 91 2 3 4 5 .; fi; \
+ if [ -z "$(DESTDIR)" ]; then /usr/sbin/update-rc.d asterisk defaults 50 91; fi; \
elif [ -f /etc/gentoo-release ]; then \
$(INSTALL) -m 755 contrib/init.d/rc.gentoo.asterisk $(DESTDIR)/etc/init.d/asterisk; \
if [ -z "$(DESTDIR)" ]; then /sbin/rc-update add asterisk default; fi; \
Modified: team/oej/pinepeach/main/channel.c
URL: http://svn.asterisk.org/svn-view/asterisk/team/oej/pinepeach/main/channel.c?view=diff&rev=214351&r1=214350&r2=214351
==============================================================================
--- team/oej/pinepeach/main/channel.c (original)
+++ team/oej/pinepeach/main/channel.c Thu Aug 27 03:47:19 2009
@@ -2933,13 +2933,36 @@
}
if (chan->audiohooks) {
- struct ast_frame *new_frame, *cur;
-
+ struct ast_frame *prev = NULL, *new_frame, *cur, *dup;
+
+ /* Since ast_audiohook_write may return a new frame, and the cur frame is
+ * an item in a list of frames, create a new list adding each cur frame back to it
+ * regardless if the cur frame changes or not. */
for (cur = f; cur; cur = AST_LIST_NEXT(cur, frame_list)) {
new_frame = ast_audiohook_write_list(chan, chan->audiohooks, AST_AUDIOHOOK_DIRECTION_WRITE, cur);
+
+ /* if this frame is different than cur, preserve the end of the list,
+ * free the old frames, and set cur to be the new frame */
if (new_frame != cur) {
- ast_frfree(new_frame);
+ /* doing an ast_frisolate here seems silly, but we are not guaranteed the new_frame
+ * isn't part of local storage, meaning if ast_audiohook_write is called multiple
+ * times it may override the previous frame we got from it unless we dup it */
+ if ((dup = ast_frisolate(new_frame))) {
+ AST_LIST_NEXT(dup, frame_list) = AST_LIST_NEXT(cur, frame_list);
+ ast_frfree(new_frame);
+ ast_frfree(cur);
+ cur = dup;
+ }
}
+
+ /* now, regardless if cur is new or not, add it to the new list,
+ * if the new list has not started, cur will become the first item. */
+ if (prev) {
+ AST_LIST_NEXT(prev, frame_list) = cur;
+ } else {
+ f = cur; /* set f to be the beginning of our new list */
+ }
+ prev = cur;
}
}
Modified: team/oej/pinepeach/main/pbx.c
URL: http://svn.asterisk.org/svn-view/asterisk/team/oej/pinepeach/main/pbx.c?view=diff&rev=214351&r1=214350&r2=214351
==============================================================================
--- team/oej/pinepeach/main/pbx.c (original)
+++ team/oej/pinepeach/main/pbx.c Thu Aug 27 03:47:19 2009
@@ -1529,14 +1529,14 @@
char *args = strchr(function, '(');
if (!args)
- ast_log(LOG_WARNING, "Function doesn't contain parentheses. Assuming null argument.\n");
+ ast_log(LOG_WARNING, "Function '%s' doesn't contain parentheses. Assuming null argument.\n", function);
else {
char *p;
*args++ = '\0';
if ((p = strrchr(args, ')')) )
*p = '\0';
else
- ast_log(LOG_WARNING, "Can't find trailing parenthesis?\n");
+ ast_log(LOG_WARNING, "Can't find trailing parenthesis for function '%s(%s'?\n", function, args);
}
return args;
}
Modified: team/oej/pinepeach/main/say.c
URL: http://svn.asterisk.org/svn-view/asterisk/team/oej/pinepeach/main/say.c?view=diff&rev=214351&r1=214350&r2=214351
==============================================================================
--- team/oej/pinepeach/main/say.c (original)
+++ team/oej/pinepeach/main/say.c Thu Aug 27 03:47:19 2009
@@ -3477,6 +3477,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 time, const char *ints, const char *lang, const char *format, const char *timezone)
{
@@ -3570,14 +3576,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 {
@@ -3777,10 +3783,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 {
@@ -3862,7 +3871,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 asterisk-commits
mailing list