diff options
author | bapt <bapt@FreeBSD.org> | 2016-10-22 20:46:57 +0000 |
---|---|---|
committer | bapt <bapt@FreeBSD.org> | 2016-10-22 20:46:57 +0000 |
commit | 62cb4b26b932c652b62b8eba73976e4b9584ec97 (patch) | |
tree | 2585c31b6ff943db94138e38cb04ff4df2b43205 /usr.bin | |
parent | 017345e23d3ffe848743c367c8f2e0ed44564a9c (diff) | |
download | FreeBSD-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.c | 69 |
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) |