about summary refs log tree commit diff
path: root/src/engine
diff options
context:
space:
mode:
Diffstat (limited to 'src/engine')
-rw-r--r--src/engine/e_engine.c21
-rw-r--r--src/engine/e_engine.h10
2 files changed, 24 insertions, 7 deletions
diff --git a/src/engine/e_engine.c b/src/engine/e_engine.c
index d73082db..e3dd4df1 100644
--- a/src/engine/e_engine.c
+++ b/src/engine/e_engine.c
@@ -88,20 +88,29 @@ void engine_init(const char *appname)
 }
 
 
-void engine_listdir(const char *path, FS_LISTDIR_CALLBACK cb, void *user)
+void engine_listdir(int types, const char *path, FS_LISTDIR_CALLBACK cb, void *user)
 {
 	char buffer[1024];
 	
 	/* list current directory */
-	fs_listdir(path, cb, user);
+	if(types&LISTDIRTYPE_CURRENT)
+	{
+		fs_listdir(path, cb, user);
+	}
 	
 	/* list users directory */
-	engine_savepath(path, buffer, sizeof(buffer));
-	fs_listdir(buffer, cb, user);
+	if(types&LISTDIRTYPE_SAVE)
+	{
+		engine_savepath(path, buffer, sizeof(buffer));
+		fs_listdir(buffer, cb, user);
+	}
 	
 	/* list datadir directory */
-	str_format(buffer, sizeof(buffer), "%s/%s", datadir, path);
-	fs_listdir(buffer, cb, user);
+	if(types&LISTDIRTYPE_DATA)
+	{
+		str_format(buffer, sizeof(buffer), "%s/%s", datadir, path);
+		fs_listdir(buffer, cb, user);
+	}
 }
 
 void engine_getpath(char *buffer, int buffer_size, const char *filename, int flags)
diff --git a/src/engine/e_engine.h b/src/engine/e_engine.h
index f11ba5c5..0a5385cc 100644
--- a/src/engine/e_engine.h
+++ b/src/engine/e_engine.h
@@ -11,7 +11,15 @@ void engine_config_write_line(const char *line);
 void engine_config_write_stop();
 
 
-void engine_listdir(const char *path, FS_LISTDIR_CALLBACK cb, void *user);
+enum
+{
+	LISTDIRTYPE_SAVE=1,
+	LISTDIRTYPE_CURRENT=2,
+	LISTDIRTYPE_DATA=4,
+	LISTDIRTYPE_ALL = ~0
+};
+
+void engine_listdir(int types, const char *path, FS_LISTDIR_CALLBACK cb, void *user);
 IOHANDLE engine_openfile(const char *filename, int flags);
 void engine_getpath(char *buffer, int buffer_size, const char *filename, int flags);