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