[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