mirror of
				https://github.com/tmux/tmux.git
				synced 2025-11-04 00:56:10 +00:00 
			
		
		
		
	REG_STARTEND is not portable, but it turns out we don't actually need
it. From Evan Green, GitHub issue 1982.
This commit is contained in:
		
							
								
								
									
										22
									
								
								regsub.c
									
									
									
									
									
								
							
							
						
						
									
										22
									
								
								regsub.c
									
									
									
									
									
								
							@@ -77,10 +77,7 @@ regsub(const char *pattern, const char *with, const char *text, int flags)
 | 
			
		||||
	end = strlen(text);
 | 
			
		||||
 | 
			
		||||
	while (start <= end) {
 | 
			
		||||
		m[0].rm_so = start;
 | 
			
		||||
		m[0].rm_eo = end;
 | 
			
		||||
 | 
			
		||||
		if (regexec(&r, text, nitems(m), m, REG_STARTEND) != 0) {
 | 
			
		||||
		if (regexec(&r, text + start, nitems(m), m, 0) != 0) {
 | 
			
		||||
			regsub_copy(&buf, &len, text, start, end);
 | 
			
		||||
			break;
 | 
			
		||||
		}
 | 
			
		||||
@@ -89,22 +86,25 @@ regsub(const char *pattern, const char *with, const char *text, int flags)
 | 
			
		||||
		 * Append any text not part of this match (from the end of the
 | 
			
		||||
		 * last match).
 | 
			
		||||
		 */
 | 
			
		||||
		regsub_copy(&buf, &len, text, last, m[0].rm_so);
 | 
			
		||||
		regsub_copy(&buf, &len, text, last, m[0].rm_so + start);
 | 
			
		||||
 | 
			
		||||
		/*
 | 
			
		||||
		 * If the last match was empty and this one isn't (it is either
 | 
			
		||||
		 * later or has matched text), expand this match. If it is
 | 
			
		||||
		 * empty, move on one character and try again from there.
 | 
			
		||||
		 */
 | 
			
		||||
		if (empty || m[0].rm_so != last || m[0].rm_so != m[0].rm_eo) {
 | 
			
		||||
			regsub_expand(&buf, &len, with, text, m, nitems(m));
 | 
			
		||||
		if (empty ||
 | 
			
		||||
		    start + m[0].rm_so != last ||
 | 
			
		||||
		    m[0].rm_so != m[0].rm_eo) {
 | 
			
		||||
			regsub_expand(&buf, &len, with, text + start, m,
 | 
			
		||||
			    nitems(m));
 | 
			
		||||
 | 
			
		||||
			last = m[0].rm_eo;
 | 
			
		||||
			start = m[0].rm_eo;
 | 
			
		||||
			last = start + m[0].rm_eo;
 | 
			
		||||
			start += m[0].rm_eo;
 | 
			
		||||
			empty = 0;
 | 
			
		||||
		} else {
 | 
			
		||||
			last = m[0].rm_eo;
 | 
			
		||||
			start = m[0].rm_eo + 1;
 | 
			
		||||
			last = start + m[0].rm_eo;
 | 
			
		||||
			start += m[0].rm_eo + 1;
 | 
			
		||||
			empty = 1;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user