[asterisk-commits] trunk r21906 - /trunk/pbx.c

asterisk-commits at lists.digium.com asterisk-commits at lists.digium.com
Fri Apr 21 06:44:17 MST 2006


Author: rizzo
Date: Fri Apr 21 08:44:15 2006
New Revision: 21906

URL: http://svn.digium.com/view/asterisk?rev=21906&view=rev
Log:
simplify pbx_builtin_execiftime


Modified:
    trunk/pbx.c

Modified: trunk/pbx.c
URL: http://svn.digium.com/view/asterisk/trunk/pbx.c?rev=21906&r1=21905&r2=21906&view=diff
==============================================================================
--- trunk/pbx.c (original)
+++ trunk/pbx.c Fri Apr 21 08:44:15 2006
@@ -5119,49 +5119,43 @@
  */
 static int pbx_builtin_execiftime(struct ast_channel *chan, void *data)
 {
-	int res = 0;
-	char *ptr1, *ptr2;
+	char *s, *appname;
 	struct ast_timing timing;
 	struct ast_app *app;
-	const char *usage = "ExecIfTime requires an argument:\n  <time range>|<days of week>|<days of month>|<months>?<appname>[|<appargs>]";
+	static const char *usage = "ExecIfTime requires an argument:\n  <time range>|<days of week>|<days of month>|<months>?<appname>[|<appargs>]";
 
 	if (ast_strlen_zero(data)) {
 		ast_log(LOG_WARNING, "%s\n", usage);	
 		return -1;
 	}
 
-	if (!(ptr1 = ast_strdupa(data)))
+	if (!(appname = ast_strdupa(data)))
 		return -1;
 
-	ptr2 = ptr1;
-	/* Separate the Application data ptr1 is the time spec ptr2 is the app|data */
-	strsep(&ptr2,"?");
-	if(!ast_build_timing(&timing, ptr1)) {
-		ast_log(LOG_WARNING, "Invalid Time Spec: %s\nCorrect usage: %s\n", ptr1, usage);
-		res = -1;
+	s = strsep(&appname,"?");	/* Separate the timerange and application name/data */
+	if (!appname) {	/* missing application */
+		ast_log(LOG_WARNING, "%s\n", usage);
+		return -1;
+	}
+
+	if (!ast_build_timing(&timing, s)) {
+		ast_log(LOG_WARNING, "Invalid Time Spec: %s\nCorrect usage: %s\n", s, usage);
+		return -1;
 	}
 		
-	if (!res && ast_check_timing(&timing)) {
-		if (!ptr2) {
-			ast_log(LOG_WARNING, "%s\n", usage);
-		}
-
-		/* ptr2 is now the app name 
-		   we're done with ptr1 now so recycle it and use it to point to the app args */
-		if((ptr1 = strchr(ptr2, '|'))) {
-			*ptr1 = '\0';
-			ptr1++;
-		}
+	if (!ast_check_timing(&timing))	/* outside the valid time window, just return */
+		return 0;
+
+	/* now split appname|appargs */
+	if ((s = strchr(appname, '|')))
+		*s++ = '\0';
 		
-		if ((app = pbx_findapp(ptr2))) {
-			res = pbx_exec(chan, app, ptr1 ? ptr1 : "");
-		} else {
-			ast_log(LOG_WARNING, "Cannot locate application %s\n", ptr2);
-			res = -1;
-		}
-	}
-	
-	return res;
+	if ((app = pbx_findapp(appname))) {
+		return pbx_exec(chan, app, S_OR(s, ""));
+	} else {
+		ast_log(LOG_WARNING, "Cannot locate application %s\n", appname);
+		return -1;
+	}
 }
 
 /*!



More information about the asterisk-commits mailing list