Subject: '-D' option of diff 3.9 - #ifdef directives missing
From: Robert Webb <[email-masked]>
To: [email-masked]
Date: Mon, 30 Jan 2023 19:02:43 -0800
List-Id: <debbugs-submit.debbugs.gnu.org>

Hi,
The merged output from 'diff -D' (v3.9) is missing the '#ifdef'
directives.  A test script and logs from runs with two versions of diff,
one not working, and the second older one working, follows.

-------------------------------------------------------------------------
#!/bin/sh
# diff_ifdef_example.sh   2023-01-30   rw
#
# The -D option (--ifdef) of 'diff' version 3.9 does not work correctly.
# The '#ifdef' directives are not included in the merged output.

diff -v |grep diff
seq 5 > c
for OPT in '' '-D ZZZ' '-u'  ;do
  printf '\n=== diff %s\n' "$OPT"
  sed 2,3d c  |diff $OPT c -
  done

-------------------------------------------------------------------------
openSUSE Tumbleweed 20230129
diff (GNU diffutils) 3.9

=== diff
2,3d1
< 2
< 3

=== diff -D ZZZ
1
2
3
4
5

=== diff -u
--- c 2023-01-30 16:29:06.165608569 -0800
+++ - 2023-01-30 16:29:06.188398585 -0800
@@ -1,5 +1,3 @@
 1
-2
-3
 4
 5

-------------------------------------------------------------------------
openSUSE Tumbleweed 20220312
diff (GNU diffutils) 3.8

=== diff
2,3d1
< 2
< 3

=== diff -D ZZZ
1
#ifndef ZZZ
2
3
#endif /* ! ZZZ */
4
5

=== diff -u
--- c 2023-01-30 16:32:59.516569839 -0800
+++ - 2023-01-30 16:32:59.529462800 -0800
@@ -1,5 +1,3 @@
 1
-2
-3
 4
 5

-- 
Robert Webb