Author: hwright
Date: Tue Jul 13 12:43:55 2010
New Revision: 963697
URL: http://svn.apache.org/viewvc?rev=963697&view=rev
Log:
Prevent API proliferation!
Deprecate the svn_io_get_dir_filenames() API, whose job can now be done by
svn_io_get_dirents3(), with the only_check_type parameter set to TRUE.
Specifically, the latter now avoids an extra stat() call on most platforms,
which was the purpose of svn_io_get_dir_filenames() to begin with.
(See r857526.)
* subversion/libsvn_subr/io.c
(svn_io_get_dir_filenames): Make this a wrapper around get_dirents3().
* subversion/include/svn_io.h
(svn_io_get_dir_filenames): Deprecate.
Modified:
subversion/trunk/subversion/include/svn_io.h
subversion/trunk/subversion/libsvn_subr/io.c
Modified: subversion/trunk/subversion/include/svn_io.h
URL:
http://svn.apache.org/viewvc/subversion/trunk/subversion/include/svn_io.h?rev=963697&r1=963696&r2=963697&view=diff
==============================================================================
--- subversion/trunk/subversion/include/svn_io.h (original)
+++ subversion/trunk/subversion/include/svn_io.h Tue Jul 13 12:43:55 2010
@@ -1371,7 +1371,9 @@ svn_io_remove_dir(const char *path,
* apr_dir_read() are NOT returned in the hash.
*
* @since New in 1.4.
+ * @deprecated Provided for backward compatibility with the 1.6 API.
*/
+SVN_DEPRECATED
svn_error_t *
svn_io_get_dir_filenames(apr_hash_t **dirents,
const char *path,
Modified: subversion/trunk/subversion/libsvn_subr/io.c
URL:
http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_subr/io.c?rev=963697&r1=963696&r2=963697&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_subr/io.c (original)
+++ subversion/trunk/subversion/libsvn_subr/io.c Tue Jul 13 12:43:55 2010
@@ -1976,44 +1976,8 @@ svn_io_get_dir_filenames(apr_hash_t **di
const char *path,
apr_pool_t *pool)
{
- apr_status_t status;
- apr_dir_t *this_dir;
- apr_finfo_t this_entry;
- apr_int32_t flags = APR_FINFO_NAME;
-
- *dirents = apr_hash_make(pool);
-
- SVN_ERR(svn_io_dir_open(&this_dir, path, pool));
-
- for (status = apr_dir_read(&this_entry, flags, this_dir);
- status == APR_SUCCESS;
- status = apr_dir_read(&this_entry, flags, this_dir))
- {
- if ((this_entry.name[0] == '.')
- && ((this_entry.name[1] == '\0')
- || ((this_entry.name[1] == '.')
- && (this_entry.name[2] == '\0'))))
- {
- continue;
- }
- else
- {
- const char *name;
- SVN_ERR(entry_name_to_utf8(&name, this_entry.name, path, pool));
- apr_hash_set(*dirents, name, APR_HASH_KEY_STRING, name);
- }
- }
-
- if (! (APR_STATUS_IS_ENOENT(status)))
- return svn_error_wrap_apr(status, _("Can't read directory '%s'"),
- svn_dirent_local_style(path, pool));
-
- status = apr_dir_close(this_dir);
- if (status)
- return svn_error_wrap_apr(status, _("Error closing directory '%s'"),
- svn_dirent_local_style(path, pool));
-
- return SVN_NO_ERROR;
+ return svn_error_return(svn_io_get_dirents3(dirents, path, TRUE,
+ pool, pool));
}
svn_io_dirent2_t *