aboutsummaryrefslogtreecommitdiff
path: root/usr.bin/diff/diff.c
diff options
context:
space:
mode:
authorKyle Evans <kevans@FreeBSD.org>2018-08-19 03:57:20 +0000
committerKyle Evans <kevans@FreeBSD.org>2018-08-19 03:57:20 +0000
commite68edb8cf06a796453378b98d963692c838c400f (patch)
tree477137d7ee0c4b2dd86e3dc4e9815300643d8753 /usr.bin/diff/diff.c
parentd17f8070a1341a2f35a1f25d85dbe98abddf2033 (diff)
downloadsrc-e68edb8cf06a796453378b98d963692c838c400f.tar.gz
src-e68edb8cf06a796453378b98d963692c838c400f.zip
diff(1): Implement -B/--ignore-blank-lines
As noted by cem in r338035, coccinelle invokes diff(1) with the -B flag. This was not previously implemented here, so one was forced to create a link for GNU diff to /usr/local/bin/diff Implement the -B flag and add some primitive tests for it. It is implemented in the same fashion that -I is implemented; each chunk's lines are scanned, and if a non-blank line is encountered then the chunk will be output. Otherwise, it's skipped. MFC after: 2 weeks
Notes
Notes: svn path=/head/; revision=338039
Diffstat (limited to 'usr.bin/diff/diff.c')
-rw-r--r--usr.bin/diff/diff.c14
1 files changed, 9 insertions, 5 deletions
diff --git a/usr.bin/diff/diff.c b/usr.bin/diff/diff.c
index e12697c4e89e..dbb6528c254f 100644
--- a/usr.bin/diff/diff.c
+++ b/usr.bin/diff/diff.c
@@ -66,6 +66,7 @@ static struct option longopts[] = {
{ "ed", no_argument, 0, 'e' },
{ "forward-ed", no_argument, 0, 'f' },
{ "speed-large-files", no_argument, NULL, 'H' },
+ { "ignore-blank-lines", no_argument, 0, 'B' },
{ "ignore-matching-lines", required_argument, 0, 'I' },
{ "ignore-case", no_argument, 0, 'i' },
{ "paginate", no_argument, NULL, 'l' },
@@ -164,6 +165,9 @@ main(int argc, char **argv)
case 'h':
/* silently ignore for backwards compatibility */
break;
+ case 'B':
+ dflags |= D_SKIPBLANKLINES;
+ break;
case 'I':
push_ignore_pats(optarg);
break;
@@ -447,18 +451,18 @@ void
usage(void)
{
(void)fprintf(stderr,
- "usage: diff [-abdilpTtw] [-c | -e | -f | -n | -q | -u] [--ignore-case]\n"
+ "usage: diff [-aBbdilpTtw] [-c | -e | -f | -n | -q | -u] [--ignore-case]\n"
" [--no-ignore-case] [--normal] [--strip-trailing-cr] [--tabsize]\n"
" [-I pattern] [-L label] file1 file2\n"
- " diff [-abdilpTtw] [-I pattern] [-L label] [--ignore-case]\n"
+ " diff [-aBbdilpTtw] [-I pattern] [-L label] [--ignore-case]\n"
" [--no-ignore-case] [--normal] [--strip-trailing-cr] [--tabsize]\n"
" -C number file1 file2\n"
- " diff [-abdiltw] [-I pattern] [--ignore-case] [--no-ignore-case]\n"
+ " diff [-aBbdiltw] [-I pattern] [--ignore-case] [--no-ignore-case]\n"
" [--normal] [--strip-trailing-cr] [--tabsize] -D string file1 file2\n"
- " diff [-abdilpTtw] [-I pattern] [-L label] [--ignore-case]\n"
+ " diff [-aBbdilpTtw] [-I pattern] [-L label] [--ignore-case]\n"
" [--no-ignore-case] [--normal] [--tabsize] [--strip-trailing-cr]\n"
" -U number file1 file2\n"
- " diff [-abdilNPprsTtw] [-c | -e | -f | -n | -q | -u] [--ignore-case]\n"
+ " diff [-aBbdilNPprsTtw] [-c | -e | -f | -n | -q | -u] [--ignore-case]\n"
" [--no-ignore-case] [--normal] [--tabsize] [-I pattern] [-L label]\n"
" [-S name] [-X file] [-x pattern] dir1 dir2\n");