#!/bin/sh #works with the original sh as well as with bash . #This script fixes all #include statements with doublequoted argument that # end in a semicolon. #Replace the directory name 'mudlib' below if your name differs. # #This script has been developed using the SLS linux distribution. # #Note: Trailing whitespace is removed. # The substitution is not anchored to the start of the line. # Double quotes inside the #include filename will cause the substitution # to fail, or maybe even remove a ; (and possibly whitespace) from the # filename. # Mixing /* with // comments will cause the substitution to fail. find mudlib -type f -name "*.[hc]" \! -name "*[^ '\"]*" -print | xargs egrep -l "^#include[ ]*\"[^\"]*\"[ ]*;" | xargs -n1 -i sh -c "(echo '1,\$s/\\(#include[ ]*\"[^\"]*\"\\)[ ]*;[ ]*\$/\\1/';echo '1,\$s/\\(#include[ ]*\"[^\"]*\"[ ]*\\);\\([ ]*\\/\\*.*\\*\\/\\)[ ]*\$/\\1 \\2/';echo '1,\$s/\\(#include[ ]*\"[^\"]*\"[ ]*\\);\\([ ]*\\/\\/.*\\)\$/\\1 \\2/';echo w;echo q) | ed {}"