summaryrefslogtreecommitdiffstats
path: root/usr.bin
diff options
context:
space:
mode:
authorbapt <bapt@FreeBSD.org>2016-10-22 20:46:57 +0000
committerbapt <bapt@FreeBSD.org>2016-10-22 20:46:57 +0000
commit62cb4b26b932c652b62b8eba73976e4b9584ec97 (patch)
tree2585c31b6ff943db94138e38cb04ff4df2b43205 /usr.bin
parent017345e23d3ffe848743c367c8f2e0ed44564a9c (diff)
downloadFreeBSD-src-62cb4b26b932c652b62b8eba73976e4b9584ec97.zip
FreeBSD-src-62cb4b26b932c652b62b8eba73976e4b9584ec97.tar.gz
MFC r303783, r305927:
r303783: sdiff: remove non finish/function code 2 extra options not available neither on other BSD nor in GNU sdiff: --diff-pid and --pipe-fd were present in the SoC code, none were usable Just remove it r305927: Remove reference of z(s)diff which was dropped before importing
Diffstat (limited to 'usr.bin')
-rw-r--r--usr.bin/sdiff/sdiff.c69
1 files changed, 29 insertions, 40 deletions
diff --git a/usr.bin/sdiff/sdiff.c b/usr.bin/sdiff/sdiff.c
index 8337e46..34fcf7c 100644
--- a/usr.bin/sdiff/sdiff.c
+++ b/usr.bin/sdiff/sdiff.c
@@ -104,9 +104,6 @@ enum {
HLINES_OPT,
LFILES_OPT,
DIFFPROG_OPT,
- PIPE_FD,
- /* pid from the diff parent (if applicable) */
- DIFF_PID,
NOOP_OPT,
};
@@ -120,8 +117,6 @@ static struct option longopts[] = {
{ "output", required_argument, NULL, 'o' },
{ "diff-program", required_argument, NULL, DIFFPROG_OPT },
- { "pipe-fd", required_argument, NULL, PIPE_FD },
- { "diff-pid", required_argument, NULL, DIFF_PID },
/* Options processed by diff. */
{ "ignore-file-name-case", no_argument, NULL, FCASE_IGNORE_OPT },
{ "no-ignore-file-name-case", no_argument, NULL, FCASE_SENSITIVE_OPT },
@@ -237,7 +232,7 @@ main(int argc, char **argv)
FILE *diffpipe=NULL, *file1, *file2;
size_t diffargc = 0, wflag = WIDTH;
int ch, fd[2] = {-1}, status;
- pid_t pid=0; pid_t ppid =-1;
+ pid_t pid=0;
const char *outfile = NULL;
struct option *popt;
char **diffargv, *diffprog = DIFF_PATH, *filename1, *filename2,
@@ -320,11 +315,6 @@ main(int argc, char **argv)
if (errstr)
errx(2, "width is %s: %s", errstr, optarg);
break;
- case DIFF_PID:
- ppid = strtonum(optarg, 0, INT_MAX, &errstr);
- if (errstr)
- errx(2, "diff pid value is %s: %s", errstr, optarg);
- break;
case HELP_OPT:
for (i = 0; help_msg[i] != NULL; i++)
printf("%s\n", help_msg[i]);
@@ -393,35 +383,34 @@ main(int argc, char **argv)
errx(2, "width is too large: %zu", width);
line_width = width * 2 + 3;
- if (ppid == -1 ) {
- if (pipe(fd))
- err(2, "pipe");
-
- switch (pid = fork()) {
- case 0:
- /* child */
- /* We don't read from the pipe. */
- close(fd[0]);
- if (dup2(fd[1], STDOUT_FILENO) == -1)
- err(2, "child could not duplicate descriptor");
- /* Free unused descriptor. */
- close(fd[1]);
- execvp(diffprog, diffargv);
- err(2, "could not execute diff: %s", diffprog);
- break;
- case -1:
- err(2, "could not fork");
- break;
- }
-
- /* parent */
- /* We don't write to the pipe. */
+ if (pipe(fd))
+ err(2, "pipe");
+
+ switch (pid = fork()) {
+ case 0:
+ /* child */
+ /* We don't read from the pipe. */
+ close(fd[0]);
+ if (dup2(fd[1], STDOUT_FILENO) == -1)
+ err(2, "child could not duplicate descriptor");
+ /* Free unused descriptor. */
close(fd[1]);
-
- /* Open pipe to diff command. */
- if ((diffpipe = fdopen(fd[0], "r")) == NULL)
- err(2, "could not open diff pipe");
+ execvp(diffprog, diffargv);
+ err(2, "could not execute diff: %s", diffprog);
+ break;
+ case -1:
+ err(2, "could not fork");
+ break;
}
+
+ /* parent */
+ /* We don't write to the pipe. */
+ close(fd[1]);
+
+ /* Open pipe to diff command. */
+ if ((diffpipe = fdopen(fd[0], "r")) == NULL)
+ err(2, "could not open diff pipe");
+
if ((file1 = fopen(filename1, "r")) == NULL)
err(2, "could not open %s", filename1);
if ((file2 = fopen(filename2, "r")) == NULL)
@@ -489,8 +478,8 @@ main(int argc, char **argv)
}
/*
- * When sdiff/zsdiff detects a binary file as input, executes them with
- * diff/zdiff to maintain the same behavior as GNU sdiff with binary input.
+ * When sdiff detects a binary file as input, executes them with
+ * diff to maintain the same behavior as GNU sdiff with binary input.
*/
static void
binexec(char *diffprog, char *f1, char *f2)
OpenPOWER on IntegriCloud