Revision history for File::Cache 0.16 2001-04-18-11-52 - prepared version 0.16 for release - replaced the explicit system( ) call to invoke the subprocess get test with a fork( ) instead - changed email address to dewitt@unto.net - started version 0.16 0.15 2001-04-17-15-07 - prepared version 0.15 for release - added a note about the release of Cache::Cache - Updated documentation to indicate that $File::Cache::sNO_MAX_SIZE is the default cache size. (David Coppit <david@coppit.org>) - added a patch by Michael Blakely to allow for $sEXPIRES_NEVER to be used as the $expires_in parameter on a set - started version 0.15 0.14 2000-11-27-09-45 - prepared version 0.14 for release - documented the optional usage of Storable in the README - added requirement for File::Spec 0.82 - removed "use Data::Dumper" - the .description file now uses a global friendly umask - started version 0.14 0.13 2000-10-07-19-22 - binmode is now used to avoid problems with setting/getting binary data from the cache (This change probably means that the segfault above is no longer a problem. However, it's still a good idea to use a canonical format in case processes on different platforms are accessing the same cache over NFS.) - Removed unreferenced subroutine _purge_all - Minor formatting changes - Internal subroutines get_user_path() and get_namespace_path(), are now prefixed by an underscore - Names of non-method subroutines are now all consistently uppercase - File::Cache::REDUCE_SIZE was coded as a method, but documented as an object-independent function. Fixed it, and made _choose_victim_file an object-independent function - Added POD documentation for get_namespace(), set_namespace(), get_max_size(), set_max_size(), get_cache_depth(), and set_cache_depth() - "cache entry" changed to "cache object" for consistency in terminology - Cache size reduction is now done, if necessary, when set_max_size() called - Minor portability improvements - Improved error checking for REDUCE_SIZE - Added parameter checking to subroutines - Removed $sGET_STALE_ONLY and $sGET_FRESH_ONLY from @EXPORT_OK list (these are internal constants) - Internal subroutines get_username_path() and get_namespace_path() now build the path directly from the cache key, username, and namespace parameters. Internal subroutines set_username_path() and set_namespace_path() removed. - Improved directory verification so that it only happens when the cache key, user, or namespace change. - Modified some functions to return references instead of operating on reference parameters - Added cache metadata support (useful for checking that an existing cache is compatible with the current version of File::Cache) - Added $CACHE_OBJECT_VERSION, which describes the version of cache objects that the current version of File::Cache can work with. - Added support for choosing the persistence mechanism to be either Storable (the traditional and default mechanism) or Data::Dumper. (Data::Dumper is slower, but (1) is a standard Perl module, (2) is written entirely in Perl (no compilation difficulties), and (3) generates human-readable cache entries.) - minor formatting change to better fit 80 columns - changed _UNTAINT_STRING to take a untainted regex - added _UNTAINT_FILE_PATH to call _UNTAINT_STRING with the file path regex - Changed default cache key from $TMPDIR/File::Cache to $TMPDIR/FileCache on DOS/Windows platforms, since the former is illegal. - retroactively split version 0.13 from 0.12 - Corrupted cache objects stored using Data::Dumper are automatically detected and removed from the cache - Cache_Description.pl was changed to .description - .description files now use a proprietary format instead of Data::Dumper - changed test.pl to always quote the call to the subprocess - changed test/test_get.pl to strip quotes if needed - wrote _RECURSIVELY_REMOVE_DIRECTORY to avoid taint failures in File::Path - switched to finddepth() instead of find() in File::Find because finddepth() doesn't use Cwd, which in turn is not taint safe. - removed the unused _UNTAINT_CACHE_DESCRIPTION_CODE() and $sUNTAINTED_CACHE_DESCRIPTION_CODE_REGEX - updated the README to mention the cache upgrade issues - updated the CREDITS file - changed _WRITE_FILE to write to a temp file then rename to avoid corruption race (thanks Randal!) - better documentation for get, get_stale, and set (thanks Randal!) - added two tests for getting and setting blessed objects 0.12 2000-08-25-09-58 (not public) - fixed a typo in CHANGES - added a more generic taint check called _untaint_string, this is called everywhere tainting could occur - use File::Spec::Functions::tmpdir to remove OS dependency for temp directory (Bug ID 104869) - removed last TODO item - cache directories are now only created when needed (David Coppit <david@coppit.org>) - fixed the second test "21" in test.pl - switched to nfreeze() instead of freeze to avoid segfault (thanks David!) 0.11 2000-06-22-09-23 - updated the CREDITS file - updated Cache.pm for version 0.11 0.10 2000-06-22-09-07 - updated Cache.pm for version 0.10 - added the remove($identifier) method to allow keys to be selectively removed - added a test for remove - changed email address in the docs to <dewitt@avacet.com> - reformatted for 80 column displays - updated the _write_file routine to make it pass taint checking (jhoward@fastmail.fm) - updated the purge() routine to make it pass taint checking (jhoward@fastmail.fm) 0.09 2000-04-28-12-43 - perldoc updates for get and get_stale (Bug ID 104432) - added public constants to EXPORT_OK (Bug ID 104433) - modified test scripts to make use of EXPORT_OK'd vars - updated the TODO list 0.08 2000-04-12-10-31 - added get_creation_time() (David Coppit <david@coppit.org>) - added get_expiration_time() (David Coppit <david@coppit.org>) - updated the perldoc (David Coppit <david@coppit.org>) - updated the test.pl script to include tests for get_creation_time() and get_expiration_time() (David Coppit <david@coppit.org>) 0.07 2000-04-10-09-45 - added support for the "cache_depth" option that enables subdirectories in the cache to increase performance when caching large numbers of objects - rewrote the _recursive_find_nearest_expiration and _recursive_find_latest_accessed routines to actually work recursively (needed to support cache_depth) - added a routine that avoids a race when removing files from the cache (thanks to Jessica Mintz) 0.06 2000-03-06-11-12 - bug fixed where purge() didn't actually delete the cache file (David Coppit <david@coppit.org>) - auto_purge, username, max_size, and filemode options added (David Coppit <david@coppit.org>) - cache_path was renamed user_path - set/get methods added for auto_purge, username, max_size, expires_in and filemode, namespace_path, cache_key, cache_path, and user_path (David Coppit <david@coppit.org>) - automatic cache size reduction added to set() method, and reduce_size() method created (David Coppit <david@coppit.org>) - fixed the CHANGES file to reflect the version 0.05 changes - updated the perldoc (David Coppit <david@coppit.org>) - now using File::Spec for the path generation (thanks for David for the idea) - updated the test.pl and test/test_get.pl scripts to include tests for setting the username, filemode, and max_size 0.05 2000-02-22-16-23 - updated the requirements in the README - provided a default username if getpwuid is not available (MacOS) - fixed a problem where _purge failed on FreeBSD (thanks to Doug Steinwand) 0.04 2000-02-16-14-48 - create a per-user namespace to better deal with file permission problems when more than one user wants to use File::Cache - only create a globally read/write directory for the default root of the cache (i.e., /tmp/File::Cache/) - implemented size and SIZE - added the _verify_directory routine for better encapsulation of that functionality - updated documentation - first submitted to CPAN - modified test.pl to use "/tmp/TMPC" as a namespace - updated the requirements in Makefile.PL 0.03 2000-02-16-02-10 - set the default file and directory creation umask to 0000 as a *really* temporary fix 0.02 2000-02-14-16-52 - set the default file and directory creation umask to 0000 as a temporary fix to the file permission problem 0.01 2000-02-10-09-22 - original version, created by dclinton@eziba.com