From b6a13b6cdf02bd017c887eb8b7224b5e967e1bb6 Mon Sep 17 00:00:00 2001 From: Nick Mathewson Date: Sat, 3 Sep 2005 04:40:05 +0000 Subject: [PATCH] Add directory listing functions to util.[ch]. Watch the features creep! svn:r4906 --- src/common/util.c | 26 ++++++++++++++++++++++++++ src/common/util.h | 1 + 2 files changed, 27 insertions(+) diff --git a/src/common/util.c b/src/common/util.c index e2bfadebee..67d62aeddb 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 #include +#else +#include #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 dirname. + * Return NULL on error or if dirname 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 7dfce88992..eb39fd008a 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);