![]() |
From: "Phil Watkinson" <Pkwatkinson@tesco.net> Date: Sat, 24 Jun 2000 10:24:50 +0100 This bug has been found by James Lee, whose email with his patch to solve the problem is added to the bottom of this mail. Due to the fact that the number of HylaFAX users who use Solaris and are sed experts are very few (and based on the response James has had to his patch I would guess that number is 1, James himself) Now you know 2. :-) there has been no testing or confirmation that the patch is good; I looked into his patch. It worked for me, but my patch has the following advantages: * It's easier to maintain and understand. * It handles the case of FOO/SYMLINK/../BAR correctly. The current code, even with Lee's patch, incorrectly substitutes FOO/BAR. * It handles the case of //FOO correctly on old-fashioned hosts where leading // is significant. POSIX.1 allows a special meaning for leading //, so it's incorrect to replace //FOO with /FOO on those hosts. On the other hand, James Lee's patch has the following advantages over the patch that I submitted: * It handles the case of .//FOO correctly. * It optimizes ./FOO to FOO even at the start of a line. So here's a revision to my proposed patch that combines the advantages of the two patches. 2000-06-26 Paul Eggert <eggert@twinsun.com> * port/mkdepend.in: Don't try to optimize "a/b/../d" into "a/d". This is incorrect if b is a symbolic link. Also, the code was broken anyway: it transformed "/2.95.2/../" into "/2.95.../". =================================================================== RCS file: port/mkdepend.in,v retrieving revision 1.1 retrieving revision 1.3 diff -pu -r1.1 -r1.3 --- port/mkdepend.in 1998/10/12 20:47:50 1.1 +++ port/mkdepend.in 2000/06/26 16:04:40 1.3 @@ -249,8 +249,9 @@ fi depgenxx=`echo $depgen|sed -e s/\'//g -e 's/(/\\(/g' -e 's/)/\\)/g'` $depgenxx $* | eval "sed \ - -e :loop -e 's:[^\./][^\./]*/\.\./::g' -e tloop \ - -e 's:\([/ ]\)\./:\1:g' \ + -e 's:^: :' \ + -e 's:\([/ ]\)\.//*:\1:g' \ + -e 's:^ ::' \ $sedprog" | $AWK "$awkprog" >> $newdepfile --------------------previous mail by James Lee--------------------------- Re sed script to simplify: `/usr/local/lib/gcc-lib/sparc-sun-solaris2.7/2.95.1/../../../../sparc-sun-so laris2.7/include/assert.h' [snip] So please allow me to offer this: old line 252 and 253 in ``port/mkdepend.in'': -e :loop -e 's:[^\./][^\./]*/\.\./::g' -e tloop \ -e 's:\([/ ]\)\./:\1:g' \ new: -e s:///*:/:g -e 's:^: :' -e 's: \([^/ ]\): ./\1:g' \ -e :a -e 's:/\./:/:' -e 's:/\.\./://:' -e ta \ -e :b -e 's:/[^/ ][^/ ]*//:/:' -e tb \ -e :c -e s://:/../: -e tc \ -e 's: \./\([^ ]\): \1:g' -e 's:^ ::' \ ____________________ HylaFAX(tm) Users Mailing List _______________________ To unsub: mail -s unsubscribe hylafax-users-request@hylafax.org < /dev/null