mirror of
				https://github.com/asterisk/asterisk.git
				synced 2025-10-31 02:37:10 +00:00 
			
		
		
		
	Cleanup formatting in app_math.c
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@3896 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
		
							
								
								
									
										220
									
								
								apps/app_math.c
									
									
									
									
									
								
							
							
						
						
									
										220
									
								
								apps/app_math.c
									
									
									
									
									
								
							| @@ -41,15 +41,12 @@ | ||||
| #include <sys/file.h> | ||||
| #include "../astconf.h" | ||||
|  | ||||
|  | ||||
|  | ||||
| static char *tdesc = "Basic maths functions"; | ||||
|  | ||||
| static char *app_math = "Math"; | ||||
|  | ||||
| static char *math_synopsis = "Performs Mathematical Functions"; | ||||
|  | ||||
|  | ||||
| static char *math_descrip = | ||||
| "Math(returnvar,<number1><op><number 2>\n\n" | ||||
| "Perform floating point calculation on number 1 to number 2 and \n" | ||||
| @@ -57,7 +54,6 @@ static char *math_descrip = | ||||
| "    +,-,/,*,%,<,>,>=,<=,==\n" | ||||
| "and behave as their C equivalents.  Always returns 0.\n"; | ||||
|  | ||||
|  | ||||
| #define ADDFUNCTION 0 | ||||
| #define DIVIDEFUNCTION 1 | ||||
| #define MULTIPLYFUNCTION 2 | ||||
| @@ -70,16 +66,14 @@ static char *math_descrip = | ||||
| #define LTEFUNCTION 8 | ||||
| #define EQFUNCTION 9 | ||||
|  | ||||
|  | ||||
|  | ||||
| STANDARD_LOCAL_USER; | ||||
|  | ||||
| LOCAL_USER_DECL; | ||||
|  | ||||
| static int math_exec(struct ast_channel *chan, void *data) { | ||||
|  | ||||
|         float fnum1; | ||||
|         float fnum2; | ||||
| static int math_exec(struct ast_channel *chan, void *data)  | ||||
| { | ||||
| 	float fnum1; | ||||
| 	float fnum2; | ||||
| 	float ftmp = 0; | ||||
| 	char *op; | ||||
| 	int iaction=-1; | ||||
| @@ -87,25 +81,22 @@ static int math_exec(struct ast_channel *chan, void *data) { | ||||
| 	/* dunno, big calulations :D */ | ||||
| 	char user_result[30]; | ||||
|  | ||||
|         char *s; | ||||
|         char *mvar, *mvalue1, *mvalue2=NULL; | ||||
| 	char *s; | ||||
| 	char *mvar, *mvalue1, *mvalue2=NULL; | ||||
| 		 | ||||
|         struct localuser *u; | ||||
| 	struct localuser *u; | ||||
|  | ||||
|         if (!data) { | ||||
|                 ast_log(LOG_WARNING, "No parameters passed. !\n"); | ||||
|                 return -1; | ||||
|         } | ||||
| 						 | ||||
|         LOCAL_USER_ADD(u); | ||||
| 	if (!data) { | ||||
| 		ast_log(LOG_WARNING, "No parameters passed. !\n"); | ||||
| 		return -1; | ||||
| 	} | ||||
|  | ||||
| 	LOCAL_USER_ADD(u); | ||||
| 		 | ||||
|  | ||||
|  | ||||
| 	s = ast_strdupa((void *) data); | ||||
|        | ||||
|         mvar          = strsep(&s, "|"); | ||||
|         mvalue1       = strsep(&s, "|"); | ||||
| 	 | ||||
|  | ||||
| 	mvar = strsep(&s, "|"); | ||||
| 	mvalue1 = strsep(&s, "|"); | ||||
| 	 | ||||
| 	if ((op = strchr(mvalue1, '+'))) { | ||||
| 		iaction = ADDFUNCTION; | ||||
| @@ -149,94 +140,89 @@ static int math_exec(struct ast_channel *chan, void *data) { | ||||
| 	if (op)  | ||||
| 		mvalue2 = op + 1; | ||||
| 		 | ||||
| 	 | ||||
| 	if (!mvar || !mvalue1 || !mvalue2) { | ||||
|                 ast_log(LOG_WARNING, "Supply all the parameters - just this once, please\n"); | ||||
| 	        LOCAL_USER_REMOVE(u); | ||||
| 	        return -1; | ||||
| 	} | ||||
|  | ||||
| 	if (!strcmp(mvar,"")) { | ||||
|                 ast_log(LOG_WARNING, "No return variable set.\n"); | ||||
|                 LOCAL_USER_REMOVE(u); | ||||
| 		ast_log(LOG_WARNING, "Supply all the parameters - just this once, please\n"); | ||||
| 		LOCAL_USER_REMOVE(u); | ||||
| 		return -1; | ||||
| 	} | ||||
|  | ||||
| 	if (!strcmp(mvar,"")) { | ||||
| 		ast_log(LOG_WARNING, "No return variable set.\n"); | ||||
| 		LOCAL_USER_REMOVE(u); | ||||
| 		return -1; | ||||
| 	} | ||||
|  | ||||
|         if (sscanf(mvalue1, "%f", &fnum1) != 1) { | ||||
|                         ast_log(LOG_WARNING, "'%s' is not a valid number\n", mvalue1); | ||||
|                         LOCAL_USER_REMOVE(u); | ||||
|                         return -1; | ||||
|         } | ||||
| 	if (sscanf(mvalue1, "%f", &fnum1) != 1) { | ||||
| 		ast_log(LOG_WARNING, "'%s' is not a valid number\n", mvalue1); | ||||
| 		LOCAL_USER_REMOVE(u); | ||||
| 		return -1; | ||||
| 	} | ||||
|  | ||||
|         if (sscanf(mvalue2, "%f", &fnum2) != 1) { | ||||
|                         ast_log(LOG_WARNING, "'%s' is not a valid number\n", mvalue2); | ||||
|                         LOCAL_USER_REMOVE(u); | ||||
|                         return -1; | ||||
|         } | ||||
| 	if (sscanf(mvalue2, "%f", &fnum2) != 1) { | ||||
| 		ast_log(LOG_WARNING, "'%s' is not a valid number\n", mvalue2); | ||||
| 		LOCAL_USER_REMOVE(u); | ||||
| 		return -1; | ||||
| 	} | ||||
|  | ||||
|  | ||||
|         switch (iaction) { | ||||
| 	        case ADDFUNCTION : | ||||
| 			ftmp = fnum1 + fnum2; | ||||
| 			break; | ||||
|  | ||||
|         	case DIVIDEFUNCTION : | ||||
| 			if (fnum2 <=0) | ||||
| 				ftmp = 0; /* can't do a divide by 0 */ | ||||
| 			else | ||||
| 				ftmp = (fnum1 / fnum2); | ||||
| 			break; | ||||
| 	        case MULTIPLYFUNCTION : | ||||
| 			ftmp = (fnum1 * fnum2); | ||||
| 			break; | ||||
|         	case SUBTRACTFUNCTION : | ||||
| 			ftmp = (fnum2 - fnum1); | ||||
| 			break; | ||||
| 	        case MODULUSFUNCTION : { | ||||
| 			int inum1 = fnum1; | ||||
| 			int inum2 = fnum2; | ||||
| 	switch (iaction) { | ||||
| 	case ADDFUNCTION : | ||||
| 		ftmp = fnum1 + fnum2; | ||||
| 		break; | ||||
| 	case DIVIDEFUNCTION : | ||||
| 		if (fnum2 <=0) | ||||
| 			ftmp = 0; /* can't do a divide by 0 */ | ||||
| 		else | ||||
| 			ftmp = (fnum1 / fnum2); | ||||
| 		break; | ||||
| 	case MULTIPLYFUNCTION : | ||||
| 		ftmp = (fnum1 * fnum2); | ||||
| 		break; | ||||
| 	case SUBTRACTFUNCTION : | ||||
| 		ftmp = (fnum2 - fnum1); | ||||
| 		break; | ||||
| 	case MODULUSFUNCTION : { | ||||
| 		int inum1 = fnum1; | ||||
| 		int inum2 = fnum2; | ||||
| 			 | ||||
| 			ftmp = (inum1 % inum2); | ||||
| 			 | ||||
| 			break; | ||||
| 			} | ||||
| 		case GTFUNCTION : | ||||
| 			if (fnum1 > fnum2) | ||||
| 				strncpy (user_result, "TRUE", sizeof (user_result) - 1); | ||||
| 			else | ||||
| 				strncpy (user_result, "FALSE", sizeof (user_result) - 1); | ||||
| 			break; | ||||
|                 case LTFUNCTION : | ||||
|                         if (fnum1 < fnum2) | ||||
| 				strncpy (user_result, "TRUE", sizeof (user_result) - 1); | ||||
|                         else | ||||
| 				strncpy (user_result, "FALSE", sizeof (user_result) - 1); | ||||
| 			break; | ||||
|                 case GTEFUNCTION : | ||||
|                         if (fnum1 >= fnum2) | ||||
| 				strncpy (user_result, "TRUE", sizeof (user_result) - 1); | ||||
|                         else | ||||
| 				strncpy (user_result, "FALSE", sizeof (user_result) - 1); | ||||
| 			break; | ||||
|                 case LTEFUNCTION : | ||||
|                         if (fnum1 <= fnum2) | ||||
| 				strncpy (user_result, "TRUE", sizeof (user_result) - 1); | ||||
|                         else | ||||
| 				strncpy (user_result, "FALSE", sizeof (user_result) - 1); | ||||
| 			break;					 | ||||
|                 case EQFUNCTION : | ||||
|                         if (fnum1 == fnum2) | ||||
| 				strncpy (user_result, "TRUE", sizeof (user_result) - 1); | ||||
|                         else | ||||
| 				strncpy (user_result, "FALSE", sizeof (user_result) - 1); | ||||
| 			break; | ||||
| 		default : | ||||
| 			ast_log(LOG_WARNING, "Something happened that neither of us should be proud of %d\n", iaction); | ||||
|                         LOCAL_USER_REMOVE(u); | ||||
|                         return -1; | ||||
| 									 | ||||
|         } | ||||
| 		ftmp = (inum1 % inum2); | ||||
| 		 | ||||
| 		break; | ||||
| 		} | ||||
| 	case GTFUNCTION : | ||||
| 		if (fnum1 > fnum2) | ||||
| 			strncpy (user_result, "TRUE", sizeof (user_result) - 1); | ||||
| 		else | ||||
| 			strncpy (user_result, "FALSE", sizeof (user_result) - 1); | ||||
| 		break; | ||||
| 	case LTFUNCTION : | ||||
| 		if (fnum1 < fnum2) | ||||
| 			strncpy (user_result, "TRUE", sizeof (user_result) - 1); | ||||
| 		else | ||||
| 			strncpy (user_result, "FALSE", sizeof (user_result) - 1); | ||||
| 		break; | ||||
| 	case GTEFUNCTION : | ||||
| 		if (fnum1 >= fnum2) | ||||
| 			strncpy (user_result, "TRUE", sizeof (user_result) - 1); | ||||
| 		else | ||||
| 			strncpy (user_result, "FALSE", sizeof (user_result) - 1); | ||||
| 		break; | ||||
| 	case LTEFUNCTION : | ||||
| 		if (fnum1 <= fnum2) | ||||
| 			strncpy (user_result, "TRUE", sizeof (user_result) - 1); | ||||
| 		else | ||||
| 			strncpy (user_result, "FALSE", sizeof (user_result) - 1); | ||||
| 		break;					 | ||||
| 	case EQFUNCTION : | ||||
| 		if (fnum1 == fnum2) | ||||
| 			strncpy (user_result, "TRUE", sizeof (user_result) - 1); | ||||
| 		else | ||||
| 			strncpy (user_result, "FALSE", sizeof (user_result) - 1); | ||||
| 		break; | ||||
| 	default : | ||||
| 		ast_log(LOG_WARNING, "Something happened that neither of us should be proud of %d\n", iaction); | ||||
| 		LOCAL_USER_REMOVE(u); | ||||
| 		return -1; | ||||
| 	} | ||||
|  | ||||
| 	if (iaction < GTFUNCTION || iaction > EQFUNCTION)  | ||||
| 		snprintf(user_result,sizeof(user_result),"%f",ftmp); | ||||
| @@ -244,23 +230,23 @@ static int math_exec(struct ast_channel *chan, void *data) { | ||||
| 	pbx_builtin_setvar_helper(chan, mvar, user_result);	 | ||||
| 	 | ||||
| 	LOCAL_USER_REMOVE(u); | ||||
|         return 0; | ||||
| 	return 0; | ||||
| } | ||||
|  | ||||
| int unload_module(void) | ||||
| { | ||||
|      int res; | ||||
|      STANDARD_HANGUP_LOCALUSERS; | ||||
|       | ||||
|      res  = ast_unregister_application(app_math);      | ||||
|      return res; | ||||
| 	int res; | ||||
| 	STANDARD_HANGUP_LOCALUSERS; | ||||
|  | ||||
| 	res  = ast_unregister_application(app_math); | ||||
| 	return res; | ||||
| } | ||||
|  | ||||
| int load_module(void) | ||||
| { | ||||
|      int res; | ||||
|      res = ast_register_application(app_math, math_exec, math_synopsis, math_descrip); | ||||
|      return res; | ||||
| 	int res; | ||||
| 	res = ast_register_application(app_math, math_exec, math_synopsis, math_descrip); | ||||
| 	return res; | ||||
| } | ||||
|  | ||||
| char *description(void) | ||||
| @@ -280,10 +266,4 @@ char *key() | ||||
| 	return ASTERISK_GPL_KEY; | ||||
| } | ||||
|  | ||||
|  | ||||
|  | ||||
| /* Fading everything to black and blue... */ | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user