#include "lyx_forms.h"
#include <boost/bind.hpp>
+#include <boost/regex.hpp>
#include <algorithm>
#include <map>
using lyx::support::LyXReadLink;
using lyx::support::MakeAbsPath;
using lyx::support::OnlyFilename;
-using lyx::support::regexMatch;
using lyx::support::split;
+using lyx::support::subst;
using lyx::support::suffixIs;
using lyx::support::trim;
using std::max;
using std::sort;
-
+using std::string;
using std::map;
int FileDialog::Private::minh_ = 0;
+namespace {
+
+boost::regex getRegex(string const & pat)
+{
+ // We massage the pattern a bit so that the usual
+ // shell pattern we all are used to will work.
+ // One nice thing about using a real regex is that
+ // things like "*.*[^~]" will work also.
+ // build the regex string.
+ string pattern = subst(pat, ".", "\\.");
+ pattern = subst(pattern, "*", ".*");
+
+ boost::regex reg(pattern);
+ return reg;
+}
+
+
+bool globMatch(string const & a, boost::regex const & reg)
+{
+ return boost::regex_match(a, reg);
+}
+
+} // namespace anon
+
+
// Reread: updates dialog list to match class directory
void FileDialog::Private::Reread()
{
}
// Parses all entries of the given subdirectory
+ boost::regex reg = getRegex(mask_);
+
time_t curTime = time(0);
rewinddir(dir);
while (dirent * entry = readdir(dir)) {
|| fileInfo.isChar()
|| fileInfo.isBlock()
|| fileInfo.isFifo()) {
- if (!regexMatch(fname, mask_))
+ if (!globMatch(fname, reg))
continue;
} else if (!(isDir = fileInfo.isDir()))
continue;