minimal/do: didn't work correctly with multi-level auto dir creation.

If we tried to build target a/b/c/d and a/b/c didn't exist yet, we
would correctly name the temp file something like a__b/c__d.tmp.  But
if a/b didn't exist yet, we named the temp file a/b__c/d.tmp, which
didn't work.  Instead, name it a/b__c__d.tmp as expected.
This commit is contained in:
Avery Pennarun 2018-11-02 04:17:27 -04:00
commit 2023d36676
3 changed files with 12 additions and 3 deletions

View file

@ -1,3 +1,4 @@
exec >&2
rm -rf t/.redo redo-sh rm -rf t/.redo redo-sh
if [ -e .do_built ]; then if [ -e .do_built ]; then
while read x; do while read x; do

View file

@ -322,10 +322,10 @@ _dir_shovel()
xdir=$1 xbase=$2 xbasetmp=$2 xdir=$1 xbase=$2 xbasetmp=$2
while [ ! -d "$xdir" -a -n "$xdir" ]; do while [ ! -d "$xdir" -a -n "$xdir" ]; do
_dirsplit "${xdir%/}" _dirsplit "${xdir%/}"
xbasetmp=${_dirsplit_base}__$xbase xbasetmp=${_dirsplit_base}__$xbasetmp
xdir=$_dirsplit_dir xbase=$_dirsplit_base/$xbase xdir=$_dirsplit_dir xbase=$_dirsplit_base/$xbase
_debug "xbasetmp='$xbasetmp'" >&2
done done
_debug "xbasetmp='$xbasetmp'" >&2
} }

View file

@ -1,3 +1,11 @@
rm -rf sub.tmp rm -rf sub.tmp sub2.tmp sub3.tmp
redo-ifchange sub.tmp/test.txt redo-ifchange sub.tmp/test.txt
[ -e sub.tmp/test.txt ] || exit 96 [ -e sub.tmp/test.txt ] || exit 96
redo-ifchange sub2.tmp/a/b/c/test.txt
[ -e sub2.tmp/a/b/c/test.txt ] || exit 97
mkdir -p sub3.tmp/a
redo-ifchange sub3.tmp/a/b/c/test.txt
[ -e sub2.tmp/a/b/c/test.txt ] || exit 98