From 0fc2762de75ab7c6ef91654dd7883cbbeef7dc92 Mon Sep 17 00:00:00 2001 From: "Yann E. MORIN\"" Date: Tue, 20 Jan 2009 20:10:50 +0000 Subject: 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 --git a/scripts/functions b/scripts/functions index 5bf6b3d..b8d31a0 100644 --- a/scripts/functions +++ b/scripts/functions @@ -242,11 +242,18 @@ CT_MktempDir() { 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. -- cgit v0.10.2-6-g49f6