Hi The attached patch takes care of the following situation: mkdir foo touch foo/bar (optional) chmod 0 foo rm -rf foo not working as it can't chdir to foo. I need this as my backup scripts back up directories like this (out of necessity, they're part of a test-suite) but they then don't get rotated as rm -rf fails on the oldest backup. Thanks Ian
diff -ur fileutils-4.0.37/ChangeLog fileutils-4.0.37-igl/ChangeLog --- fileutils-4.0.37/ChangeLog Sun Jan 21 12:27:38 2001 +++ fileutils-4.0.37-igl/ChangeLog Mon Feb 5 22:47:58 2001 @@ -1,3 +1,8 @@ +2001-02-05 Ian Lynagh <[EMAIL PROTECTED]> + + * chmod directories u+rwx if necessary first if interactive is 0 + so we can remove them + 2001-01-21 Jim Meyering <[EMAIL PROTECTED]> * Version 4.0.37. diff -ur fileutils-4.0.37/THANKS fileutils-4.0.37-igl/THANKS --- fileutils-4.0.37/THANKS Sat Jan 13 15:48:59 2001 +++ fileutils-4.0.37-igl/THANKS Mon Feb 5 23:01:02 2001 @@ -119,6 +119,7 @@ Hugh Daniel [EMAIL PROTECTED] Ian Jackson [EMAIL PROTECTED] Ian Lance Taylor [EMAIL PROTECTED] +Ian Lynagh [EMAIL PROTECTED] Ian Turner [EMAIL PROTECTED] James [EMAIL PROTECTED] James Antill [EMAIL PROTECTED] --- fileutils-4.0.37/src/remove.c Mon Dec 25 10:44:42 2000 +++ fileutils-4.0.37-igl/src/remove.c Mon Feb 5 22:47:00 2001 @@ -702,6 +702,12 @@ if (need_save_cwd && save_cwd (&cwd)) return RM_ERROR; + /* Make target directory u+rwx if it isn't already */ + if ((!(fs->mode & S_IRUSR) || !(fs->mode & S_IWUSR) || !(fs->mode & S_IXUSR)) + && !x->interactive) + /* We don't care about errors here, let them get caught below */ + chmod (dir_name, fs->mode | S_IRUSR | S_IWUSR | S_IXUSR); + /* Make target directory the current one. */ if (chdir (dir_name) < 0) {