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