57 lines
		
	
	
	
		
			1.6 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			57 lines
		
	
	
	
		
			1.6 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| Index: usr.bin/patch/pathnames.h
 | |
| ===================================================================
 | |
| --- usr.bin/patch/pathnames.h	(revision 286254)
 | |
| +++ usr.bin/patch/pathnames.h	(working copy)
 | |
| @@ -9,4 +9,4 @@
 | |
|  
 | |
|  #include <paths.h>
 | |
|  
 | |
| -#define	_PATH_ED		"/bin/ed"
 | |
| +#define	_PATH_RED		"/bin/red"
 | |
| Index: usr.bin/patch/pch.c
 | |
| ===================================================================
 | |
| --- usr.bin/patch/pch.c	(revision 286254)
 | |
| +++ usr.bin/patch/pch.c	(working copy)
 | |
| @@ -1,4 +1,3 @@
 | |
| -
 | |
|  /*-
 | |
|   * Copyright 1986, Larry Wall
 | |
|   * 
 | |
| @@ -1409,6 +1408,7 @@ do_ed_script(void)
 | |
|  	char	*t;
 | |
|  	off_t	beginning_of_this_line;
 | |
|  	FILE	*pipefp = NULL;
 | |
| +	int	continuation;
 | |
|  
 | |
|  	if (!skip_rest_of_patch) {
 | |
|  		if (copy_file(filearg[0], TMPOUTNAME) < 0) {
 | |
| @@ -1415,7 +1415,7 @@ do_ed_script(void)
 | |
|  			unlink(TMPOUTNAME);
 | |
|  			fatal("can't create temp file %s", TMPOUTNAME);
 | |
|  		}
 | |
| -		snprintf(buf, buf_size, "%s%s%s", _PATH_ED,
 | |
| +		snprintf(buf, buf_size, "%s%s%s", _PATH_RED,
 | |
|  		    verbose ? " " : " -s ", TMPOUTNAME);
 | |
|  		pipefp = popen(buf, "w");
 | |
|  	}
 | |
| @@ -1433,7 +1433,19 @@ do_ed_script(void)
 | |
|  		    (*t == 'a' || *t == 'c' || *t == 'd' || *t == 'i' || *t == 's')) {
 | |
|  			if (pipefp != NULL)
 | |
|  				fputs(buf, pipefp);
 | |
| -			if (*t != 'd') {
 | |
| +			if (*t == 's') {
 | |
| +				for (;;) {
 | |
| +					continuation = 0;
 | |
| +					t = strchr(buf, '\0') - 1;
 | |
| +					while (--t >= buf && *t == '\\')
 | |
| +						continuation = !continuation;
 | |
| +					if (!continuation ||
 | |
| +					    pgets(true) == 0)
 | |
| +						break;
 | |
| +					if (pipefp != NULL)
 | |
| +						fputs(buf, pipefp);
 | |
| +				}
 | |
| +			} else if (*t != 'd') {
 | |
|  				while (pgets(true)) {
 | |
|  					p_input_line++;
 | |
|  					if (pipefp != NULL)
 |