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)
|