Correctly exit from extract_run() and update_run() if files needed are
missing from ${WORKDIR}/files/. This bug was caused by the astonishing interaction of "return" and pipelines; in the following code, the "return" does not exit the function, but instead exits the subshell which was spawned for the last element of the pipeline; consequently, the output produced is "foo". foo() { echo bar | while read baz; do if [ ${baz} = "bar" ]; then return 1 fi done echo foo } Reported by: simon
This commit is contained in:
parent
880a322170
commit
157c398c7e
@ -768,7 +768,7 @@ extract_metadata() {
|
||||
|
||||
# Do the actual work involved in "extract"
|
||||
extract_run() {
|
||||
grep "^${EXTRACTPATH}" ${WORKDIR}/INDEX | while read LINE; do
|
||||
if ! grep "^${EXTRACTPATH}" ${WORKDIR}/INDEX | while read LINE; do
|
||||
FILE=`echo ${LINE} | cut -f 1 -d '|'`
|
||||
HASH=`echo ${LINE} | cut -f 2 -d '|'`
|
||||
echo ${PORTSDIR}/${FILE}
|
||||
@ -789,7 +789,9 @@ extract_run() {
|
||||
-C ${PORTSDIR} ${FILE}
|
||||
;;
|
||||
esac
|
||||
done
|
||||
done; then
|
||||
return 1
|
||||
fi
|
||||
if [ ! -z "${EXTRACTPATH}" ]; then
|
||||
return 0;
|
||||
fi
|
||||
@ -818,7 +820,8 @@ update_run() {
|
||||
|
||||
# Install new files
|
||||
echo "Extracting new files:"
|
||||
sort ${WORKDIR}/INDEX | comm -13 ${PORTSDIR}/.portsnap.INDEX - |
|
||||
if ! sort ${WORKDIR}/INDEX |
|
||||
comm -13 ${PORTSDIR}/.portsnap.INDEX - |
|
||||
while read LINE; do
|
||||
FILE=`echo ${LINE} | cut -f 1 -d '|'`
|
||||
HASH=`echo ${LINE} | cut -f 2 -d '|'`
|
||||
@ -838,7 +841,9 @@ update_run() {
|
||||
-C ${PORTSDIR} ${FILE}
|
||||
;;
|
||||
esac
|
||||
done
|
||||
done; then
|
||||
return 1
|
||||
fi
|
||||
|
||||
extract_metadata
|
||||
extract_indices
|
||||
|
Loading…
x
Reference in New Issue
Block a user