From e12753d2ec9db83ec08bb9db63902a82fb245cdd Mon Sep 17 00:00:00 2001 From: "Tomas Chvatal (scarabeus)" Date: Wed, 22 Oct 2008 22:50:54 +0200 Subject: X --- src/base/director.c~ | 61 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 src/base/director.c~ (limited to 'src/base/director.c~') diff --git a/src/base/director.c~ b/src/base/director.c~ new file mode 100644 index 0000000..a4c8496 --- /dev/null +++ b/src/base/director.c~ @@ -0,0 +1,61 @@ + +#include +#include +#include +#include +#include +#include +#include + +#include "main.h" +#include "list.h" + +typedef struct director_struct +{ + char *path; + list_t *list; +} director_t; + +director_t* loadDirector(char *s) +{ + director_t *new; + DIR *dir; + struct dirent *item; + char path[STR_PATH_SIZE]; + assert( s != 0 ); + new = malloc( sizeof(director_t) ); + memset(new, 0, sizeof(director_t) ); + new->list = newList(); +#ifndef __WIN32__ + if( s[0] == '/' ) +#else + if( s[1] == ':' ) +#endif + strcpy(path, s); + else { + // this is really correct aproach + getcwd(path, STR_PATH_SIZE); + strcat(path, "/"); + strcat(path, s); + } + new->path = strdup(path); + dir = opendir(new->path); + if( dir == NULL ) { + free(new->path); + free(new); + return NULL; + } + + while((item = readdir(dir)) != NULL) + addList(new->list, strdup(item->d_name) ); + closedir(dir); + return new; +} + +void destroyDirector(director_t *p) +{ + assert( p != NULL ); + destroyListItem(p->list, free); + free(p->path); + free(p); +} -- cgit v1.2.3