Return-Path: Mailing-List: contact tomcat-dev-help@jakarta.apache.org; run by ezmlm Delivered-To: mailing list tomcat-dev@jakarta.apache.org Received: (qmail 16274 invoked by uid 2016); 2 Nov 1999 07:20:00 -0000 Delivered-To: apcore-jakarta-tools-cvs@apache.org Received: (qmail 16263 invoked by uid 247); 2 Nov 1999 07:19:59 -0000 Date: 2 Nov 1999 07:19:59 -0000 Message-ID: <19991102071959.16261.qmail@hyperreal.org> From: duncan@hyperreal.org To: jakarta-tools-cvs@apache.org Subject: cvs commit: jakarta-tools/ant/src/main/org/apache/tools/ant/taskdefs Deltree.java duncan 99/11/01 23:19:59 Modified: . ant.jar ant/src/main/org/apache/tools/ant/taskdefs Deltree.java Log: Updated deltree task to not follow symlinks. Submitted by: Jay Doane Reviewed by: duncan Revision Changes Path 1.13 +18 -18 jakarta-tools/ant.jar <> 1.2 +26 -16 jakarta-tools/ant/src/main/org/apache/tools/ant/taskdefs/Deltree.java Index: Deltree.java =================================================================== RCS file: /home/cvs/jakarta-tools/ant/src/main/org/apache/tools/ant/taskdefs/Deltree.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- Deltree.java 1999/10/09 00:06:07 1.1 +++ Deltree.java 1999/11/02 07:19:58 1.2 @@ -26,24 +26,34 @@ " is not a dir"; throw new BuildException(msg); } - removeDir(dir); - } + try { + removeDir(dir); + } catch (IOException ioe) { + String msg = "Unable to delete " + dir.getAbsolutePath(); + throw new BuildException(msg); + } + } } - - private void removeDir(File dir) { - String[] list = dir.list(); - for (int i = 0; i < list.length; i++) { - String s = list[i]; - File f = new File(dir, s); - if (f.isDirectory()) { - removeDir(f); - } else { - f.delete(); - } - } - dir.delete(); - } + private void removeDir(File dir) throws IOException { + // check to make sure that the given dir isn't a symlink + // the comparison of absolute path and canonical path + // catches this + + if (dir.getCanonicalPath().equals(dir.getAbsolutePath())) { + String[] list = dir.list(); + for (int i = 0; i < list.length; i++) { + String s = list[i]; + File f = new File(dir, s); + if (f.isDirectory()) { + removeDir(f); + } else { + f.delete(); + } + } + } + dir.delete(); + } }