diff options
author | Nick Mathewson <nickm@torproject.org> | 2005-09-03 04:40:05 +0000 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2005-09-03 04:40:05 +0000 |
commit | b6a13b6cdf02bd017c887eb8b7224b5e967e1bb6 (patch) | |
tree | de977b88166502458286b9529b8e3124dbcfd2a7 /src | |
parent | 33b2abbc9005ef993bec3fc411bade881b125c11 (diff) | |
download | tor-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.c | 26 | ||||
-rw-r--r-- | src/common/util.h | 1 |
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); |