[Asterisk-cvs] asterisk/apps app_voicemail.c,1.75,1.76

markster at lists.digium.com markster at lists.digium.com
Mon Apr 19 19:23:35 CDT 2004


Update of /usr/cvsroot/asterisk/apps
In directory mongoose.digium.com:/tmp/cvs-serv7231/apps

Modified Files:
	app_voicemail.c 
Log Message:
Merge Matt's extern notify patch


Index: app_voicemail.c
===================================================================
RCS file: /usr/cvsroot/asterisk/apps/app_voicemail.c,v
retrieving revision 1.75
retrieving revision 1.76
diff -u -d -r1.75 -r1.76
--- app_voicemail.c	7 Apr 2004 16:16:56 -0000	1.75
+++ app_voicemail.c	19 Apr 2004 23:27:37 -0000	1.76
@@ -1372,6 +1372,18 @@
 	free(z);
 }
 
+static void run_externnotify(char *context, char *extension, int numvoicemails)
+{
+	char arguments[255];
+
+	if(externnotify[0]) {
+		strncpy(arguments, externnotify, sizeof(arguments));
+		snprintf(arguments, sizeof(arguments)-1, "%s %s %s %d&", externnotify, context, extension, numvoicemails);
+		ast_log(LOG_DEBUG,"Executing %s\n", arguments);
+		ast_safe_system(arguments);
+	}
+}
+
 static int leave_voicemail(struct ast_channel *chan, char *ext, int silent, int busy, int unavail)
 {
 	char comment[256];
@@ -1567,16 +1579,7 @@
 	manager_event(EVENT_FLAG_CALL, "MessageWaiting", "Mailbox: %s\r\nWaiting: %d\r\n", ext, ast_app_has_voicemail(ext));
 
 	/* If an external program is specified to be run after leaving a voicemail */
-	if (externnotify[0]) {
-		char arguments[255];
-		ast_log(LOG_DEBUG, "App voicemail ran the external notify program\n");
-		strncpy(tmp, externnotify, sizeof(tmp));
-		snprintf(arguments, sizeof(arguments)-1, " %s %s %d&", chan->context, ext, ast_app_has_voicemail(ext));
-		strncat(tmp, arguments, sizeof(tmp) - strlen(arguments));
-		tmp[sizeof(tmp) - 1] = '\0';
-//		ast_verbose(VERBOSE_PREFIX_3,"Executing %s\n", tmp);
-		ast_safe_system(tmp);
-	}
+	run_externnotify(chan->context, ext, ast_app_has_voicemail(ext));
 
 	return res;
 }
@@ -2375,15 +2378,7 @@
 		}
 		/* Leave voicemail for someone */
 		manager_event(EVENT_FLAG_CALL, "MessageWaiting", "Mailbox: %s\r\nWaiting: %d\r\n", vmtmp->mailbox, ast_app_has_voicemail(vmtmp->mailbox));
-		if (externnotify[0]) {
-			char arguments[255];
-			strncpy(tmp, externnotify, sizeof(tmp));
-			snprintf(arguments, sizeof(arguments)-1, " %s %s %d&", chan->context, vmtmp->mailbox, ast_app_has_voicemail(vmtmp->mailbox));
-			strncat(tmp, arguments, sizeof(tmp) - strlen(arguments));
-			tmp[sizeof(tmp) - 1] = '\0';
-		//	ast_verbose(VERBOSE_PREFIX_3, "executing %s\n", tmp);
-			ast_safe_system(tmp);
-		}
+		run_externnotify(chan->context, vmtmp->mailbox, ast_app_has_voicemail(vmtmp->mailbox));
 
 		saved_messages++;
 		vmfree = vmtmp;
@@ -3035,15 +3030,8 @@
 		free_user(vmu);
 	if (valid) {
 		manager_event(EVENT_FLAG_CALL, "MessageWaiting", "Mailbox: %s\r\nWaiting: %d\r\n", vms.username, ast_app_has_voicemail(vms.username));
-		if (externnotify[0]) {
-			char arguments[255];
-			strncpy(tmp, externnotify, sizeof(tmp));
-			snprintf(arguments, sizeof(arguments)-1, " %s %s %d&", chan->context, vms.username, ast_app_has_voicemail(vms.username));
-			strncat(tmp, arguments, sizeof(tmp) - strlen(arguments));
-			tmp[sizeof(tmp) - 1] = '\0';
-		//	ast_verbose(VERBOSE_PREFIX_3, "executing: %s\n");
-			ast_safe_system(tmp);
-		}
+		run_externnotify(chan->context, vms.username, ast_app_has_voicemail(vms.username));
+
 	}
 	LOCAL_USER_REMOVE(u);
 
@@ -3351,7 +3339,7 @@
 		
 		if ((notifystr = ast_variable_retrieve(cfg, "general", "externnotify"))) {
 			strncpy(externnotify, notifystr, sizeof(externnotify) - 1);
-			//ast_verbose(VERBOSE_PREFIX_3, "found externnotify: %s\n", externnotify);
+			ast_log(LOG_DEBUG, "found externnotify: %s\n", externnotify);
 		} else {
 			externnotify[0] = '\0';
 		}




More information about the svn-commits mailing list