aboutsummaryrefslogtreecommitdiff
path: root/Src/Wasabi/bfc/file/wildcharsenum.cpp
diff options
context:
space:
mode:
authorJef <jef@targetspot.com>2024-09-24 08:54:57 -0400
committerJef <jef@targetspot.com>2024-09-24 08:54:57 -0400
commit20d28e80a5c861a9d5f449ea911ab75b4f37ad0d (patch)
tree12f17f78986871dd2cfb0a56e5e93b545c1ae0d0 /Src/Wasabi/bfc/file/wildcharsenum.cpp
parent537bcbc86291b32fc04ae4133ce4d7cac8ebe9a7 (diff)
downloadwinamp-20d28e80a5c861a9d5f449ea911ab75b4f37ad0d.tar.gz
Initial community commit
Diffstat (limited to 'Src/Wasabi/bfc/file/wildcharsenum.cpp')
-rw-r--r--Src/Wasabi/bfc/file/wildcharsenum.cpp64
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, '?'));
+}