aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2005-09-03 04:40:05 +0000
committerNick Mathewson <nickm@torproject.org>2005-09-03 04:40:05 +0000
commitb6a13b6cdf02bd017c887eb8b7224b5e967e1bb6 (patch)
treede977b88166502458286b9529b8e3124dbcfd2a7 /src
parent33b2abbc9005ef993bec3fc411bade881b125c11 (diff)
downloadtor-b6a13b6cdf02bd017c887eb8b7224b5e967e1bb6.tar
tor-b6a13b6cdf02bd017c887eb8b7224b5e967e1bb6.tar.gz
Add directory listing functions to util.[ch]. Watch the features creep!
svn:r4906
Diffstat (limited to 'src')
-rw-r--r--src/common/util.c26
-rw-r--r--src/common/util.h1
2 files changed, 27 insertions, 0 deletions
diff --git a/src/common/util.c b/src/common/util.c
index e2bfadebe..67d62aedd 100644
--- a/src/common/util.c
+++ b/src/common/util.c
@@ -19,10 +19,13 @@ const char util_c_id[] = "$Id$";
#include "log.h"
#include "crypto.h"
#include "torint.h"
+#include "container.h"
#ifdef MS_WINDOWS
#include <io.h>
#include <direct.h>
+#else
+#include <dirent.h>
#endif
#ifdef HAVE_CTYPE_H
@@ -1106,6 +1109,29 @@ char *expand_filename(const char *filename)
}
}
+/** Return a new list containing the filenames in the directory <b>dirname</b>.
+ * Return NULL on error or if <b>dirname</b> is not a directory.
+ */
+smartlist_t *
+tor_listdir(const char *dirname)
+{
+ DIR *d;
+ smartlist_t *result;
+ struct dirent *de;
+ if (!(d = opendir(dirname)))
+ return NULL;
+
+ result = smartlist_create();
+ while ((de = readdir(d))) {
+ if (!strcmp(de->d_name, ".") ||
+ !strcmp(de->d_name, ".."))
+ continue;
+ smartlist_add(result, tor_strdup(de->d_name));
+ }
+ closedir(d);
+ return result;
+}
+
/* =====
* Net helpers
* ===== */
diff --git a/src/common/util.h b/src/common/util.h
index 7dfce8899..eb39fd008 100644
--- a/src/common/util.h
+++ b/src/common/util.h
@@ -123,6 +123,7 @@ int write_bytes_to_file(const char *fname, const char *str, size_t len,
char *read_file_to_str(const char *filename, int bin);
char *parse_line_from_str(char *line, char **key_out, char **value_out);
char *expand_filename(const char *filename);
+struct smartlist_t *tor_listdir(const char *dirname);
/* Net helpers */
int is_internal_IP(uint32_t ip);