Version History

1.3 (final) - 5/25/2000
Fixed a bug where FindFile was not taking the "without" clause into account. Instead, parameters in the "without" clause were treated as if they were in the "with" clause. This is now fixed. (Denny Davis++)
1.3a17 - 12/5/1999
Added [name_does_not_begin_with] and [name_does_not_end_with] parameters. (David Farmer++)
Added example scripts for [name_does_not_begin_with] and [name_does_not_end_with] parameters.
Updated documentation.
1.3a16 - 11/10/1999
Fixed a bug that caused FindFile to misinterpret the starting_at parameter when a text object (a textual path) was passed. (Patrick Mounteney++)
Updated documentation.
1.3a15 - 8/21/1999
Fixed numerous bugs that could cause FindFile to crash under extreme low-memory conditions.
Fixed a minor display bug which caused the "Found" counter to display a negative number if more than 32768 items were found during a scan. (David Farmer++)
Added a field to the display dialog for search criteria. (David Ann++)
Added a field to the display and results dialog for the amount of RAM used by FindFile during a search.
1.3a14 - 3/18/1999
Fixed a bug that was causing maximum_matches to function incorrectly.
1.3a13 - 3/16/1999
Added support for the following parameters:

version_is <string>
version_is_not <string>
version_contains <string>
version_does_not_contain <string>

kind_is_document is now operational.
You may now search for files with certain text in their Get Info comments with the following syntax:

    comments_contain
    comments_do_not_contain

Some examples:

    FindFile starting_at startFolder comments_contain "sent by"
    FindFile starting_at startFolder comments_do_not_contain "dog"

    FindFile starting_at startFolder comments_contain ""
    (to look for empty comments)

    FindFile starting_at startFolder comments_do_not_contain ""
    (to look for non-empty comments)

You can now specify the maximum number of items to be returned by FindFile. This paramter is of course optional. FindFile returns all matches by default. Note: FindFile will also return all matches if you specify maximum_matches -1. If you specify any other negative number, FindFile will return nothing. (Thanks to David Ann for suggesting this feature.)

Here is an example:

    FindFile starting_at startFolder name_is "fooey" maximum_matches 20

1.3a12 - 2/27/1999
Fixed a bug that caused FindFile ... with folders to return a list of paths with the last item (the folder name) missing.
Rewrote a routine that extracted file and folder names from full paths. The method I was using was calling Munger 2 or more times, which was slower than parsing the text handle myself. This method is faster, and turned out to be much simpler once I optimized it. This speeds FindFile up a bit.
1.3a12 - 2/27/1999
Added functionailty for the following:
(<date> must resolve to a date object)

    date_created_is <date>
    date_created_is_not <date>
    date_created_is_before <date>
    date_created_is_after <date>
    date_modified_is <date>
    date_modified_is_not <date>
    date_modified_is_before <date>
    date_modified_is_after <date>

1.3a10 - 1/16/1999
Fixed a bug where FindFile would return incorrect matches when using the name_starts_with and name_ends_with options. If the name of the file being examined was shorter than the length of the text being searched for, FindFile would count it as a match. (Thanks goes to Dennis L. Davis for finding and reporting this bug.)
1.3a9 - 10/12/1998
Fixed a serious memory leak in MatchInList, as well as two smaller memory leaks in AddItemToList and FindFile.
1.3a8 - 10/11/1998
FindFile again uses the names_only option. If names_only is specified, the list returned is a list of filenames. If not, the list is a list of file paths.
The MatchInList command now works correctly with path lists generated by the FindFile command. The list is expected to contain _only_ text. MatchInList looks for colons (:) in each element of the list to determine whether that item is a path or a simple filename. In the case of a path, only the actual filename is used in the comparison. You cannot, for instance, search for the word "audio" in this path: Macintosh HD:Audio:big bird.wav. The only part of the path that will be compared is "big bird.wav".
AddPathToList has been changed to AddItemToList. The data that you add is expected to be of type typeChar (text). If the data cannot be coerced to typeChar (text), the function will throw an error and exit.
1.3a7 - 10/7/1998
Removed the code that allocated FindFile storage in the system heap. This was causing major problems (bad crashes etc. on some machines). This will have to wait until later. For now, FindFile allocates its storage in the heap of the calling application, as it did before.
Added the option to have FindFile call WNE so that other applications can process events during scans. Be warned that turning this option on will slow FindFile down considerably depending on what the user happens to be doing during the scan. If your application remains in the foreground, and little action is taken by other applications during the scan, results should be close to what they would be without this option.
FindFile now always returns a text path, rather than a file specification record. The names_only option is ignored in this version. This change was made in order to fix a major speed loss over networks (see below). Future versions may allow different types of data. But for now, a textual path is the default.
FindFile has always had a speed problem that was particularly noticeable when scanning remote volumes. Scanning speeds over networks was roughly 1/3 the speed of scanning local volumes. This has been a major problem. I am happy to say that I have dramatically improved FindFile's scanning speed over networks, as well as boosted local speeds a tad.
Following are speed trials to show you how much faster this version of FindFile is. Each scan was run for 100 seconds, and the total files scanned during that time was recorded:

FindFile 1.3a4 Trials
Local #Files Remote #Files Options Used
6069
1841
events, display, subfolders and results
6090
1852
display, subfolders and results
14560
2799
subfolders and results

FindFile 1.3a7 Trials
Local #Files Remote #Files Options Used
6786
6105
events, display, subfolders and results
6899
6063
display, subfolders and results
14813
13920
subfolders and results

As you can see, both local and remote scanning speed has been significantly improved.

1.3a5 - 8/1/1998
FindFile now builds its list in the system heap while scanning. This reduces the memory requirements for FindFile to almost nothing! However, users will still need enough free memory in the application their scripts are running in to hold the list once FindFile finishes scanning and the list is transfered into their memory space.
Fixed a bug where FindFile could crash when the starting_at parameter supplied was of the wrong type.
FindFile will now accept a textual path as the starting_at parameter. The path must be a full path, and must resolve to an existing file or folder at the time of the call.
1.3a4 - 7/30/1998
1.3a3 was a bad compile. This version fixes that. The MatchInList and AddPathToList osaxen were missing. There is a problem with multi-target merge project settings in CodeWarrior. It builds the first target, but doesn't build the others, even though the osax resources are not in the output file. Weird. I'll be watching for this problem in the future.
1.3a3 - 7/30/1998
Back to alpha due to added features.
Added the "with subfolders" optional paramter to allow end-users to turn subfolder searching on and off. This option will be required from now on for FindFile to search subfolders.
Added support for using the label criteria on folders. (It previously only affected files.)
Updated MatchInList and AddPathToList to use the new keywords.
Fixed a bug where the filesize_greater_than handler was incorrectly coercing the input parameter, and was malfunctioning as a result.
1.3b2 - 7/13/1998
Fixed terminology conflict between the filetype_is keyword and one of the following osaxen: Dialog Director, DieHard, EightyLister, Resource Utilities.
Fixed terminology conflict between starting_at keyword and the startup items folder keyword used by the system. (See below)
Changed all keywords to ones that will not conflict with other osaxen. FindFile was using keywords such as 'strt' which have a good chance of being used in other osaxen. All new keywords start with the ƒ character like so: 'ƒold'.
1.3a2 - 7/11/98
Alpha phase complete. Public release as first beta.
1.3a2 - 7/11/98
Added kind_is... and kind_is_not... terminology /functionality.
The following keywords are now recognized and handled correctly (with the exception of kind_is_document):

kind_is_alias
kind_is_application
kind_is_clipping
kind_is_control_panel
kind_is_document
kind_is_extension
kind_is_font
kind_is_letter
kind_is_sound
kind_is_stationery

kind_is_not_alias
kind_is_not_application
kind_is_not_clipping
kind_is_not_control_panel
kind_is_not_document
kind_is_not_extension
kind_is_not_font
kind_is_not_letter
kind_is_not_sound
kind_is_not_stationery

Added label_is and label_is_not terminology and functionality. Labels can be specified by number or by name. No color support at this time.
1.3a1 - 7/9/1998
Added 'filesize is less than' and 'filesize is greater than' functionailty.
Changed all terminology to use "_" rather than " " (space) inbetween words. This should ensure that the osax will not conflict with any other terminology while mainting readability. Hopefully users won't dislike it too much.
Fixed bug that was preventing creator_is_not and filetype_is_not from working.
1.2
Changed the name parameter as follows - you can now use 6 different phrases for different results:

name contains
name starts with
name ends with
name is
name is not
name does not contain

Added the following features:

creator is
creator is not
filetype is
filetype is not
with results
with resultType ??? <-- not operational

1.1 - 4/26/1998
DOH! Reversed the characters in both of the previous history entry dates (4/25/89???). These entries were causing time warps to occur for whoever read them - generaly resulting in chronic confusion and head shaking. (OOPS! Sorry folks!)
Renamed the OSAX. FindFile suits it better I think for what it actually does. I may in the future, add more criterea to make the OSAX perform even more of what the Finders Find File does.
The trick will be to do this without making the OSAX hard to use.
Added some stuff to the info dialog and changed the logo for the new OSAX name.
Changed the "matching name" syntax to read "of name" which follows the convention of the rest of the criteria parameters.
Created the "starting at" parameter which now handles what used to be the direct parameter for the starting directory for the search. This is just better syntax.
Added more error checking.
1.0 - 4/25/1998
Initial Release.