pff: bug avec l'intégration de fichier origines locaux

This commit is contained in:
Jephté Clain 2018-02-23 09:15:53 +04:00
parent f17dccaaf9
commit 9481cad10c
1 changed files with 19 additions and 8 deletions

27
pff
View File

@ -727,8 +727,9 @@ function new_cmd() {
if (c == "<") print f >fcreates if (c == "<") print f >fcreates
else if (c == ">") print f >fdeletes else if (c == ">") print f >fdeletes
}' }'
cat "$fcreates" "$fdeletes" >"$fcds" # contrairement aux fichiers normaux, ajouter le contenu de fdeletes à fupdates
grep -vxf "$fcds" "$flsrc" >"$fupdates" # les fichiers de fdeletes sont des fichiers locaux non identifiés comme tels dans l'origine
{ grep -vxf "$fcreates" "$flsrc"; cat "$fdeletes"; } >"$fupdates"
array_from_lines creates "$(<"$fcreates")"; [ ${#creates[*]} -gt 0 ] && have_creates=1 || have_creates= array_from_lines creates "$(<"$fcreates")"; [ ${#creates[*]} -gt 0 ] && have_creates=1 || have_creates=
array_from_lines updates "$(<"$fupdates")"; [ ${#updates[*]} -gt 0 ] && have_updates=1 || have_updates= array_from_lines updates "$(<"$fupdates")"; [ ${#updates[*]} -gt 0 ] && have_updates=1 || have_updates=
enote "Fichiers origines: $((${#creates[*]} + ${#updates[*]})) au total, ${#creates[*]} nouveau(x)" enote "Fichiers origines: $((${#creates[*]} + ${#updates[*]})) au total, ${#creates[*]} nouveau(x)"
@ -761,14 +762,24 @@ function new_cmd() {
done done
[ $r == 0 ] || { eend $r; return 1; } [ $r == 0 ] || { eend $r; return 1; }
for i in "${updates[@]}"; do for i in "${updates[@]}"; do
src="$srcdir/${losrcs[$i]}" # du fait qu'on intègre fdeletes dans fupdates, il est possible que
# le fichier n'existe pas dans la source. de plus, l'association
# dans losrcs n'existe pas non plus. dans ce cas, il suffit de
# d'ignorer le fichier
if [ -n "${losrcs[$i]+set}" ]; then
src="$srcdir/${losrcs[$i]}"
else
src="$srcdir/$i"
fi
vlfile="${i}__pv-${version}__" vlfile="${i}__pv-${version}__"
dest="$pffdir/pff/Base/$vlfile" dest="$pffdir/pff/Base/$vlfile"
mkdirof "$dest"; r=$? if [ -e "$src" -o -L "$src" ]; then
edot $r "$i"; [ $r == 0 ] || break mkdirof "$dest"; r=$?
cp "$src" "$dest"; r=$? edot $r "$i"; [ $r == 0 ] || break
edot $r "$i"; [ $r == 0 ] || break cp "$src" "$dest"; r=$?
array_add vlfiles "$vlfile" edot $r "$i"; [ $r == 0 ] || break
array_add vlfiles "$vlfile"
fi
done done
[ $r == 0 ] || { eend $r; return 1; } [ $r == 0 ] || { eend $r; return 1; }
eend $r eend $r