Why can't I use <date> selector on an ant <dirset>?

ant

Solution

You probably need the `checkdirs` attribute set for the date selector. The default is 'false', i.e. select everything.

<date datetime="12/01/2012 12:00 AM" when="before" checkdirs="true" />

Problem

I have three files and three directories in a directory, with varying dates. ``` $ cd mydir $ ls -ltr -rw-rw-r-- 1 skiphoppy users 0 Nov 14 00:00 file.old.20121114 drwxrwxrwx 2 skiphoppy users 4096 Nov 14 00:00 dir.old.20121114 drwxrwxrwx 2 skiphoppy users 4096 Dec 5 12:05 dir.old.20121205 drwxrwxrwx 2 skiphoppy users 4096 Dec 5 12:05 dir -rw-rw-r-- 1 skiphoppy users 0 Dec 5 12:16 file.old.20121205 -rw-rw-r-- 1 skiphoppy users 0 Dec 5 12:16 file ``` I want to build a dirset that includes all directories older than 2012-12-01. If I am reading right, the selector can be used to limit the files returned. But it appears this doesn't work for a dirset, even though the dirset documentation says you can use nested patternsets and selectors. If I use the date selector on a fileset, I get just the one old file that I would expect; but with the same syntax on a dirset, I get all directories: ``` <fileset id="old.files" dir="mydir"> <date datetime="12/01/2012 12:00 AM" when="before"/> </fileset> <echo message="Files: ${toString:old.files}"/> <dirset id="old.dirs" dir="mydir"> <date datetime="12/01/2012 12:00 AM" when="before"/> </dirset> <echo message="Dirs: ${toString:old.dirs}"/> ``` Output: ``` [echo] Files: file.old.20121114 [echo] Dirs: ;dir;dir.old.20121114;dir.old.20121205 ``` What is going on here that the date selector does not work?

Original source