Using strtok_r for the string parsing.
This commit is contained in:
		
							
								
								
									
										32
									
								
								st.c
									
									
									
									
									
								
							
							
						
						
									
										32
									
								
								st.c
									
									
									
									
									
								
							| @@ -1300,8 +1300,10 @@ csiparse(void) { | |||||||
| 	long int v; | 	long int v; | ||||||
|  |  | ||||||
| 	csiescseq.narg = 0; | 	csiescseq.narg = 0; | ||||||
| 	if(*p == '?') | 	if(*p == '?') { | ||||||
| 		csiescseq.priv = 1, p++; | 		csiescseq.priv = 1; | ||||||
|  | 		p++; | ||||||
|  | 	} | ||||||
|  |  | ||||||
| 	while(p < csiescseq.buf+csiescseq.len) { | 	while(p < csiescseq.buf+csiescseq.len) { | ||||||
| 		np = NULL; | 		np = NULL; | ||||||
| @@ -1928,23 +1930,17 @@ strhandle(void) { | |||||||
|  |  | ||||||
| void | void | ||||||
| strparse(void) { | strparse(void) { | ||||||
| 	/* | 	char *p = strescseq.buf, *np, *sp; | ||||||
| 	 * TODO: Implement parsing like for CSI when required. |  | ||||||
| 	 * Format: ESC type cmd ';' arg0 [';' argn] ESC \ | 	strescseq.narg = 0; | ||||||
| 	 */ | 	np = strtok_r(strescseq.buf, ";", &sp); | ||||||
| 	int narg = 0; | 	while(p < strescseq.buf+strescseq.len && np != NULL) { | ||||||
| 	char *start = strescseq.buf, *end = start + strescseq.len; | 		strescseq.args[strescseq.narg++] = p; | ||||||
| 	strescseq.args[0] = start; |  | ||||||
| 	while(start < end && narg < LEN(strescseq.args)) { | 		np = strtok_r(NULL, ";", &sp); | ||||||
| 		start = memchr(start, ';', end - start); | 		if(np != NULL) | ||||||
| 		if(!start) | 			p = np; | ||||||
| 			break; |  | ||||||
| 		*start++ = '\0'; |  | ||||||
| 		if(start < end) { |  | ||||||
| 			strescseq.args[++narg] = start; |  | ||||||
| 	} | 	} | ||||||
| 	} |  | ||||||
| 	strescseq.narg = narg + 1; |  | ||||||
| } | } | ||||||
|  |  | ||||||
| void | void | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Christoph Lohmann
					Christoph Lohmann