summaryrefslogtreecommitdiff
path: root/g_src/find_files.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'g_src/find_files.cpp')
-rwxr-xr-xg_src/find_files.cpp180
1 files changed, 180 insertions, 0 deletions
diff --git a/g_src/find_files.cpp b/g_src/find_files.cpp
new file mode 100755
index 0000000..059dcc7
--- /dev/null
+++ b/g_src/find_files.cpp
@@ -0,0 +1,180 @@
+#include "../game_g.h"
+#include "../game_extv.h"
+
+void find_files_by_pattern(const char* pattern, svector<char *>& filenames)
+{
+ HANDLE h;
+ WIN32_FIND_DATA finddata;
+ char *c;
+
+ h=FindFirstFile(pattern,&finddata);
+
+ if(h!=INVALID_HANDLE_VALUE)
+ {
+ if(strcmp(finddata.cFileName,".")&&strcmp(finddata.cFileName,".."))
+ {
+ if(!(finddata.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY))
+ {
+ c=new char[strlen(finddata.cFileName)+1];
+ strcpy(c,finddata.cFileName);
+ filenames.push_back(c);
+ }
+ }
+
+ while(FindNextFile(h,&finddata))
+ {
+ if(strcmp(finddata.cFileName,".")&&strcmp(finddata.cFileName,".."))
+ {
+ if(!(finddata.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY))
+ {
+ c=new char[strlen(finddata.cFileName)+1];
+ strcpy(c,finddata.cFileName);
+ filenames.push_back(c);
+ }
+ }
+ }
+
+ FindClose(h);
+ }
+}
+
+void find_files_by_pattern_with_exception(const char* pattern, svector<char *>& filenames,const char *exception)
+{
+ HANDLE h;
+ WIN32_FIND_DATA finddata;
+ char *c;
+
+ h=FindFirstFile(pattern,&finddata);
+
+ if(h!=INVALID_HANDLE_VALUE)
+ {
+ if(strcmp(finddata.cFileName,".")&&strcmp(finddata.cFileName,"..")&&strcmp(finddata.cFileName,exception))
+ {
+ if(!(finddata.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY))
+ {
+ c=new char[strlen(finddata.cFileName)+1];
+ strcpy(c,finddata.cFileName);
+ filenames.push_back(c);
+ }
+ }
+
+ while(FindNextFile(h,&finddata))
+ {
+ if(strcmp(finddata.cFileName,".")&&strcmp(finddata.cFileName,"..")&&strcmp(finddata.cFileName,exception))
+ {
+ if(!(finddata.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY))
+ {
+ c=new char[strlen(finddata.cFileName)+1];
+ strcpy(c,finddata.cFileName);
+ filenames.push_back(c);
+ }
+ }
+ }
+
+ FindClose(h);
+ }
+}
+
+void find_files_by_pattern(const char* pattern, stringvectst &filenames)
+{
+ HANDLE h;
+ WIN32_FIND_DATA finddata;
+
+ h=FindFirstFile(pattern,&finddata);
+
+ if(h!=INVALID_HANDLE_VALUE)
+ {
+ if(strcmp(finddata.cFileName,".")&&strcmp(finddata.cFileName,".."))
+ {
+ if(!(finddata.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY))filenames.add_string(finddata.cFileName);
+ }
+
+ while(FindNextFile(h,&finddata))
+ {
+ if(strcmp(finddata.cFileName,".")&&strcmp(finddata.cFileName,".."))
+ {
+ if(!(finddata.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY))filenames.add_string(finddata.cFileName);
+ }
+ }
+
+ FindClose(h);
+ }
+}
+
+void find_files_by_pattern_with_exception(const char* pattern, stringvectst &filenames,const char *exception)
+{
+ HANDLE h;
+ WIN32_FIND_DATA finddata;
+
+ h=FindFirstFile(pattern,&finddata);
+
+ if(h!=INVALID_HANDLE_VALUE)
+ {
+ if(strcmp(finddata.cFileName,".")&&strcmp(finddata.cFileName,"..")&&strcmp(finddata.cFileName,exception))
+ {
+ if(!(finddata.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY))filenames.add_string(finddata.cFileName);
+ }
+
+ while(FindNextFile(h,&finddata))
+ {
+ if(strcmp(finddata.cFileName,".")&&strcmp(finddata.cFileName,"..")&&strcmp(finddata.cFileName,exception))
+ {
+ if(!(finddata.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY))filenames.add_string(finddata.cFileName);
+ }
+ }
+
+ FindClose(h);
+ }
+}
+
+void find_directories_by_pattern(const char* pattern, stringvectst &filenames)
+{
+ HANDLE h;
+ WIN32_FIND_DATA finddata;
+
+ h=FindFirstFile(pattern,&finddata);
+
+ if(h!=INVALID_HANDLE_VALUE)
+ {
+ if(strcmp(finddata.cFileName,".")&&strcmp(finddata.cFileName,".."))
+ {
+ if(finddata.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)filenames.add_string(finddata.cFileName);
+ }
+
+ while(FindNextFile(h,&finddata))
+ {
+ if(strcmp(finddata.cFileName,".")&&strcmp(finddata.cFileName,".."))
+ {
+ if(finddata.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)filenames.add_string(finddata.cFileName);
+ }
+ }
+
+ FindClose(h);
+ }
+}
+
+void find_directories_by_pattern_with_exception(const char* pattern, stringvectst &filenames,const char *exception)
+{
+ HANDLE h;
+ WIN32_FIND_DATA finddata;
+
+ h=FindFirstFile(pattern,&finddata);
+
+ if(h!=INVALID_HANDLE_VALUE)
+ {
+ if(strcmp(finddata.cFileName,".")&&strcmp(finddata.cFileName,"..")&&strcmp(finddata.cFileName,exception))
+ {
+ if(finddata.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)filenames.add_string(finddata.cFileName);
+ }
+
+ while(FindNextFile(h,&finddata))
+ {
+ if(strcmp(finddata.cFileName,".")&&strcmp(finddata.cFileName,"..")&&strcmp(finddata.cFileName,exception))
+ {
+ if(finddata.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)filenames.add_string(finddata.cFileName);
+ }
+ }
+
+ FindClose(h);
+ }
+} \ No newline at end of file