1 #!/bin/bash 2 3 PARSE_ONLY=0 4 5 function just_body { 6 if [[ $PARSE_ONLY == 1 ]]; then 7 sed -e '/^[[:space:]]*$/d' -e '/^#/d' \ 8 -e 's/^[[:space:]]\+//' -e 's/[[:space:]]\+/ /g' 9 else 10 sed -e '/^#/d' -e '/^$/d' 11 fi 12 } 13 14 function test_file { 15 file=$1 16 diff -L "$file (Sun cpp)" -L "$file (Joyent cpp)" -u \ 17 <(/usr/lib/cpp $file 2>/dev/null | just_body) \ 18 <(./cpp $file 2>/dev/null | just_body) 19 } 20 21 while getopts p name; do 22 case $name in 23 p) PARSE_ONLY=1;; 24 esac 25 done 26 shift $(($OPTIND - 1)) 27 28 if (( $# > 0 )); then 29 while (( $# > 0 )); do 30 test_file $1 31 shift; 32 done 33 else 34 for elt in /usr/include/**/*.h; do 35 # C++ that will never parse 36 [[ $elt == */firefox/* ]] && continue 37 # Triggers pre-ANSI infinitely recursive expansion 38 [[ $elt == */ncurses/* ]] && continue 39 print -u2 "*** $elt" 40 test_file $elt 41 done 42 fi