Thanks Ralph, but I'm still hoping someone with autoconf knowledge will know what to do. Mike
On Sat, Apr 18, 2015 at 03:57:56PM +0100, Ralph Corderoy wrote: > Hi Mike, > > > I know the current code uses diff -Dname option which is not > > universal. > > As an aside, I see POSIX has diff support -e for ed(1) output. And -s > for running a script. How about turning -e's output into ed that > inserts the cpp(1) commands and carrying on as before? Have a poke at > > --8<--snip-- > #! /bin/bash > > seq 10 >foo > seq 12 | sed '3,4d; 6s/./&&/; 7p' >bar > > diff -Dfoo foo bar > echo > > cp foo foo.new > diff -e foo bar | > awk -F, ' > copy { > if ($0 == ".") { > if (closing) > print closing > copy = 0 > } > print > next > } > > # 42a -> 42,a > /[acd]$/ { > $0 = substr($0, 1, length - 1) FS substr($0, length) > } > # 42,a -> 42,42,a > NF == 2 { > $0 = $1 FS $1 FS $2 > } > > { > print "\t=" $0 > } > > # 42,a > $NF == "a" { > print $1 "a" > print "#ifdef foo" > closing = "#endif /* foo */" > copy = 1 > next > } > > # 42,314,c > $NF == "c" { > print $1 "i" > print "#ifndef foo" > print "." > print ($2 + 1) "a" # Bumped on by insert. > print "#else /* foo */" > copy = 1 > closing = "#endif /* foo */" > next > } > > # 42,314,d > $NF == "d" { > print $2 "a" > print "#endif /* ! foo */" > print "." > print $1 "i" > print "#ifndef foo" > print "." > next > } > > END { > print "w\nq" > } > ' >foo.ed > cat foo.ed > echo > > sed -i '/^\t=/d' foo.ed > ed -s foo.new <foo.ed > > diff <(diff -Dfoo foo bar) foo.new && echo ok > --8<--snip-- > > It's not had much testing as I've just knocked it up, but it shows the > idea. And you might want to ditch the cpp commands and switch to > something that's nicer to handle in the rest of the script. Or maybe do > the .mk-up directly. > > Cheers, Ralph. > -- Mike Bianchi Foveal Systems 973 822-2085 mbian...@foveal.com http://www.AutoAuditorium.com http://www.FovealMounts.com