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