From ea76b6988ccafaa6a4d4ed90f2489d0e49e1f180 Mon Sep 17 00:00:00 2001 From: Benjamin Barenblat Date: Sat, 5 Sep 2015 09:32:30 -0400 Subject: Imported Upstream version 0.40.24 --- g_src/find_files.cpp | 180 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 180 insertions(+) create mode 100755 g_src/find_files.cpp (limited to 'g_src/find_files.cpp') 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& 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& 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 -- cgit v1.2.3