[Freeswitch-svn] [commit] r5083 - in freeswitch/trunk/src: . include
Freeswitch SVN
mikej at freeswitch.org
Thu May 3 21:13:35 EDT 2007
Author: mikej
Date: Thu May 3 21:13:34 2007
New Revision: 5083
Modified:
freeswitch/trunk/src/include/switch_apr.h
freeswitch/trunk/src/switch_apr.c
Log:
some quick apr_dir wrappers.
Modified: freeswitch/trunk/src/include/switch_apr.h
==============================================================================
--- freeswitch/trunk/src/include/switch_apr.h (original)
+++ freeswitch/trunk/src/include/switch_apr.h Thu May 3 21:13:34 2007
@@ -739,6 +739,12 @@
SWITCH_DECLARE(switch_status_t) switch_file_exists(const char *filename, switch_memory_pool_t *pool);
+typedef struct switch_dir switch_dir_t;
+
+SWITCH_DECLARE(switch_status_t) switch_dir_open(switch_dir_t **new_dir, const char *dirname, switch_memory_pool_t *pool);
+SWITCH_DECLARE(switch_status_t) switch_dir_close(switch_dir_t *thedir);
+SWITCH_DECLARE(const char *) switch_dir_next_file(switch_dir_t *thedir);
+
/** @} */
/**
Modified: freeswitch/trunk/src/switch_apr.c
==============================================================================
--- freeswitch/trunk/src/switch_apr.c (original)
+++ freeswitch/trunk/src/switch_apr.c Thu May 3 21:13:34 2007
@@ -373,6 +373,42 @@
return status;
}
+struct switch_dir {
+ apr_dir_t *dir_handle;
+ apr_finfo_t finfo;
+};
+
+SWITCH_DECLARE(switch_status_t) switch_dir_open(switch_dir_t **new_dir, const char *dirname, switch_memory_pool_t *pool)
+{
+ switch_status_t status;
+ switch_dir_t *dir = switch_core_alloc(pool, sizeof(switch_dir_t));
+ status = apr_dir_open(&(dir->dir_handle), dirname, pool);
+ *new_dir = dir;
+ return status;
+}
+
+SWITCH_DECLARE(switch_status_t) switch_dir_close(switch_dir_t *thedir)
+{
+ return apr_dir_close(thedir->dir_handle);
+}
+
+SWITCH_DECLARE(const char *) switch_dir_next_file(switch_dir_t *thedir)
+{
+ const char *fname = NULL;
+ apr_int32_t finfo_flags = APR_FINFO_DIRENT | APR_FINFO_TYPE | APR_FINFO_NAME;
+ while (apr_dir_read(&(thedir->finfo), finfo_flags, thedir->dir_handle) == SWITCH_STATUS_SUCCESS) {
+ if (thedir->finfo.filetype != APR_REG)
+ continue;
+ fname = thedir->finfo.fname;
+ if (!fname)
+ fname = thedir->finfo.name;
+ if (!fname)
+ continue;
+ }
+ return fname;
+}
+
+
/* thread stubs */
More information about the Freeswitch-svn
mailing list