diff options
author | Jef <jef@targetspot.com> | 2024-09-24 08:54:57 -0400 |
---|---|---|
committer | Jef <jef@targetspot.com> | 2024-09-24 08:54:57 -0400 |
commit | 20d28e80a5c861a9d5f449ea911ab75b4f37ad0d (patch) | |
tree | 12f17f78986871dd2cfb0a56e5e93b545c1ae0d0 /Src/Wasabi/bfc/file/wildcharsenum.cpp | |
parent | 537bcbc86291b32fc04ae4133ce4d7cac8ebe9a7 (diff) | |
download | winamp-20d28e80a5c861a9d5f449ea911ab75b4f37ad0d.tar.gz |
Initial community commit
Diffstat (limited to 'Src/Wasabi/bfc/file/wildcharsenum.cpp')
-rw-r--r-- | Src/Wasabi/bfc/file/wildcharsenum.cpp | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/Src/Wasabi/bfc/file/wildcharsenum.cpp b/Src/Wasabi/bfc/file/wildcharsenum.cpp new file mode 100644 index 00000000..ae3e24e2 --- /dev/null +++ b/Src/Wasabi/bfc/file/wildcharsenum.cpp @@ -0,0 +1,64 @@ +// NONPORTABLE NONPORTABLE NONPORTABLE +#include "precomp_wasabi_bfc.h" +#ifdef WIN32 +#include <windows.h> +#endif +#include "wildcharsenum.h" +#include <bfc/parse/pathparse.h> +#include <bfc/parse/paramparser.h> +#include <bfc/file/readdir.h> + +WildcharsEnumerator::WildcharsEnumerator(const wchar_t *_selection) : selection(_selection) +{ + // Then scan. + rescan(); +} + +WildcharsEnumerator::~WildcharsEnumerator() { + finddatalist.deleteAll(); +} + +int WildcharsEnumerator::getNumFiles() +{ + return finddatalist.getNumItems(); +} + +const wchar_t *WildcharsEnumerator::enumFile(int n) { + StringW path = finddatalist.enumItem(n)->path; + if (!path.isempty()) + { + enumFileString = StringPathCombine(path.getValue(), finddatalist.enumItem(n)->filename.getValue()); + return enumFileString; + } + return finddatalist.enumItem(n)->filename; +} + +void WildcharsEnumerator::rescan() +{ + finddatalist.removeAll(); + ParamParser pp(selection, L";"); + for (int is = 0; is < pp.getNumItems(); is++) + { + StringW _selection = pp.enumItem(is); + + PathParserW parse(_selection); + StringW path = L""; + StringW mask = L""; + + for (int i=0;i<parse.getNumStrings()-1;i++) + path.AppendFolder(parse.enumString(i)); + + mask = parse.getLastString(); + + // enum files and store a list + ReadDir rd(path, mask, true); + while (rd.next()) { + finddatalist.addItem(new find_entry(rd.getPath(), rd.getFilename())); + } + } +} + +int WildcharsEnumerator::isWildchars(const wchar_t *filename) +{ + return (wcschr(filename, '*') || wcschr(filename, '?')); +} |