[M3commit] CVS Update: cm3
Jay Krell
jkrell at elego.de
Sat Jun 27 12:37:00 CEST 2009
CVSROOT: /usr/cvs
Changes by: jkrell at birch. 09/06/27 12:37:00
Modified files:
cm3/m3-sys/cm3/src/: M3Build.m3
cm3/m3-sys/m3quake/src/: QMachine.m3
Log message:
remove dotdots more often
This will let -no-m3ship-resolution work far more often (I've been using it),
pretty up some output, and the reported problem where mkdir(foo/..) fails
(which I just saw now, once.)
Output from an instrumented Unresolve shows the problem:
Unresolve input is "/cm3/pkg/m3core/src/word"
Unresolve substitutes is /cm3/bin/../pkg => PKG_INSTALL
Unresolve output is "/cm3/pkg/m3core/src/word"
See, the dotdots had already been removed on the input, but
not the substitutions.
This will break unusual cases where people have dotdot
in their paths AND symlinks en route.
That is foo/../bar goes to just bar, losing any change that foo would have had.
This was already fragile because cm3 already did remove dotdots in a
number of places, it is just doing it more often now. (Notice again,
the dotdots were already removed on the path actually being used,
which was formed from the substitution, but had its dotdots already
smushed out, whereas the original source did not.)
Single dot elements will also be removed foo/./bar => foo/bar but that
doesn't break anything I presume. (And again, they were already
removed sometimes.)
More information about the M3commit
mailing list