# HG changeset patch # User "Yann E. MORIN" # Date 1232482250 0 # Node ID 081205fd37901f767eaf45072e20c709cf84da9c # Parent 86930cd9340a57169b2e051c1002ea0bac9fa84f Forced-removing of a non-existing directory breaks the build. Noticed by "Andy Johnson" , who provided a patch that I adapted. /trunk/scripts/functions | 13 10 3 0 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff -r 86930cd9340a -r 081205fd3790 scripts/functions --- a/scripts/functions Tue Jan 20 19:05:52 2009 +0000 +++ b/scripts/functions Tue Jan 20 20:10:50 2009 +0000 @@ -242,11 +242,18 @@ return 0 } -# Removes one or more directories, even if it is read-only +# Removes one or more directories, even if it is read-only, or its parent is # Usage: CT_DoForceRmdir dir [...] CT_DoForceRmdir() { - CT_DoExecLog ALL chmod -R u+w "${@}" - CT_DoExecLog ALL rm -rf "${@}" + local dir + local mode + for dir in "${@}"; do + [ -d "${dir}" ] || continue + mode="$(stat -c '%a' "${dir}")" + CT_DoExecLog ALL chmod -R u+w "$(dirname "${dir}")" + CT_DoExecLog ALL rm -rf "${dir}" + CT_DoExecLog ALL chmod -R ${mode} "$(dirname "${dir}")" + done } # Echoes the specified string on stdout until the pipe breaks.