mirror of
				https://github.com/asterisk/asterisk.git
				synced 2025-10-31 10:47:18 +00:00 
			
		
		
		
	Merged revisions 83589 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r83589 | murf | 2007-09-22 13:39:16 -0600 (Sat, 22 Sep 2007) | 1 line This closes issue #10788 -- The exact same fixes are made here for the first arg in the for(arg1; arg2; arg3) {} statement, as were done for the 3rd arg. It can now be an assignment that will embedded in a Set() app, or a macro call, or an app call. ........ git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@83590 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
		| @@ -3137,16 +3137,51 @@ static void gen_prios(struct ael_extension *exten, char *label, pval *statement, | ||||
| 			strcpy(buf2,p->u1.for_init); | ||||
| 			remove_spaces_before_equals(buf2); | ||||
| 			strp = strchr(buf2, '='); | ||||
| 			strp2 = strchr(p->u1.for_init, '='); | ||||
| 			if (strp) { | ||||
| 				strp2 = strchr(p->u1.for_init, '='); | ||||
| 				*(strp+1) = 0; | ||||
| 				strcat(buf2,"$["); | ||||
| 				strncat(buf2,strp2+1, sizeof(buf2)-strlen(strp2+1)-2); | ||||
| 				strcat(buf2,"]"); | ||||
| 				for_init->appargs = strdup(buf2); | ||||
| 			} else | ||||
| 				for_init->appargs = strdup(p->u1.for_init); | ||||
| 				for_init->app = strdup("Set"); | ||||
| 			} else { | ||||
| 				strp2 = p->u1.for_init; | ||||
| 				while (*strp2 && isspace(*strp2)) | ||||
| 					strp2++; | ||||
| 				if (*strp2 == '&') { /* itsa macro call */ | ||||
| 					char *strp3 = strp2+1; | ||||
| 					while (*strp3 && isspace(*strp3)) | ||||
| 						strp3++; | ||||
| 					strcpy(buf2, strp3); | ||||
| 					strp3 = strchr(buf2,'('); | ||||
| 					if (strp3) { | ||||
| 						*strp3 = '|'; | ||||
| 					} | ||||
| 					while ((strp3=strchr(buf2,','))) { | ||||
| 						*strp3 = '|'; | ||||
| 					} | ||||
| 					strp3 = strrchr(buf2, ')'); | ||||
| 					if (strp3) | ||||
| 						*strp3 = 0; /* remove the closing paren */ | ||||
|  | ||||
| 					for_init->appargs = strdup(buf2); | ||||
|  | ||||
| 					for_init->app = strdup("Macro"); | ||||
| 				} else {  /* must be a regular app call */ | ||||
| 					char *strp3; | ||||
| 					strcpy(buf2, strp2); | ||||
| 					strp3 = strchr(buf2,'('); | ||||
| 					if (strp3) { | ||||
| 						*strp3 = 0; | ||||
| 						for_init->app = strdup(buf2); | ||||
| 						for_init->appargs = strdup(strp3+1); | ||||
| 						strp3 = strrchr(for_init->appargs, ')'); | ||||
| 						if (strp3) | ||||
| 							*strp3 = 0; /* remove the closing paren */ | ||||
| 					} | ||||
| 				} | ||||
| 			} | ||||
|  | ||||
| 			strcpy(buf2,p->u3.for_inc); | ||||
| 			remove_spaces_before_equals(buf2); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user