about summary refs log tree commit diff
path: root/src/base
diff options
context:
space:
mode:
authoroy <Tom_Adams@web.de>2011-02-21 11:23:30 +0100
committeroy <Tom_Adams@web.de>2011-02-21 11:23:30 +0100
commit088ec3e2f3ba0419612846db8f3687f5e2de1348 (patch)
treef12d7d6a55a7ef668dcc58ee64d0869ea7434e21 /src/base
parent4f91026a01436d95cb20b3a994e96dce5072544e (diff)
downloadzcatch-088ec3e2f3ba0419612846db8f3687f5e2de1348.tar.gz
zcatch-088ec3e2f3ba0419612846db8f3687f5e2de1348.zip
made the client's map search work with sub folders. Closes #254
Diffstat (limited to 'src/base')
-rw-r--r--src/base/system.c6
-rw-r--r--src/base/system.h2
2 files changed, 5 insertions, 3 deletions
diff --git a/src/base/system.c b/src/base/system.c
index 81c43869..0f0aaf70 100644
--- a/src/base/system.c
+++ b/src/base/system.c
@@ -884,7 +884,8 @@ int fs_listdir(const char *dir, FS_LISTDIR_CALLBACK cb, int type, void *user)
 	do
 	{
 		str_copy(buffer+length, finddata.cFileName, (int)sizeof(buffer)-length);
-		cb(finddata.cFileName, fs_is_dir(buffer), type, user);
+		if(cb(finddata.cFileName, fs_is_dir(buffer), type, user))
+			break;
 	}
 	while (FindNextFileA(handle, &finddata));
 
@@ -905,7 +906,8 @@ int fs_listdir(const char *dir, FS_LISTDIR_CALLBACK cb, int type, void *user)
 	while((entry = readdir(d)) != NULL)
 	{
 		str_copy(buffer+length, entry->d_name, (int)sizeof(buffer)-length);
-		cb(entry->d_name, fs_is_dir(buffer), type, user);
+		if(cb(entry->d_name, fs_is_dir(buffer), type, user))
+			break;
 	}
 
 	/* close the directory and return */
diff --git a/src/base/system.h b/src/base/system.h
index b3beb056..725f3008 100644
--- a/src/base/system.h
+++ b/src/base/system.h
@@ -942,7 +942,7 @@ void str_timestamp(char *buffer, int buffer_size);
 	Returns:
 		Always returns 0.
 */
-typedef void (*FS_LISTDIR_CALLBACK)(const char *name, int is_dir, int dir_type, void *user);
+typedef int (*FS_LISTDIR_CALLBACK)(const char *name, int is_dir, int dir_type, void *user);
 int fs_listdir(const char *dir, FS_LISTDIR_CALLBACK cb, int type, void *user);
 
 /*