6 # include <vcl_msvc_warnings.h> 20 #if defined(_WIN32) && !defined(__CYGWIN__) 26 struct _finddata_t data_;
27 # if defined __MINGW32__ 28 typedef long handle_type;
30 typedef intptr_t handle_type;
39 handle_type find_first(
const char* dirname,
struct _finddata_t* data)
41 return _findfirst(const_cast<char*>(dirname), data);
58 if (_findnext(handle_, &data_) != 0) {
70 if (handle_ == -1L)
return 0;
76 if (handle_ == -1L)
return 0;
92 std::string::iterator i = baseglob.begin();
93 bool prev_slash=
false, in_sqr_brackets=
false;
96 while (i != baseglob.end())
98 if (*i==
'\\' && !prev_slash)
106 else if (*i==
'[' && !in_sqr_brackets)
108 in_sqr_brackets =
true;
111 else if (*i==
']' && in_sqr_brackets)
113 in_sqr_brackets =
false;
116 else if (*i==
'?' && !in_sqr_brackets)
118 else if (*i==
'*' && !in_sqr_brackets)
135 if (_findnext(handle_, &data_) != 0) {
145 #else // !defined(_WIN32) || defined(__CYGWIN__) 208 std::string::iterator i = baseglob.begin();
209 bool prev_slash=
false, in_sqr_brackets=
false;
211 std::string re =
"^";
212 while (i != baseglob.end())
214 if (*i==
'\\' && !prev_slash)
222 else if (*i==
'[' && !in_sqr_brackets)
224 in_sqr_brackets =
true;
227 else if (*i==
']' && in_sqr_brackets)
229 in_sqr_brackets =
false;
232 else if (*i==
'?' && !in_sqr_brackets)
234 else if (*i==
'*' && !in_sqr_brackets)
251 #endif // !defined(_WIN32) || defined(__CYGWIN__) 288 vul_file_iterator::operator bool()
const 290 return (p->value() !=
nullptr)?
true :
false;
295 return (
p->
value() !=
nullptr)?
false :
true;
static std::string basename(char const *filename, char const *suffix=nullptr)
Return basename.
char const * value_filename()
Pattern matching with regular expressions.
bool find(char const *)
true if regexp in char* arg.
char const * filename()
Return the non-directory part of the current pathname.
Declare pimpl, reset, and iteration routines for each OS.
bool operator!() const
Inverse boolean value.
A collection of miscellaneous filesystem-type utilities.
static const char * protect(char c)
Return an expression that will match precisely c.
class to iterate through directories and/or "glob" patterns (*.
Iterate through directories and/or "glob" patterns (*.
contains class for pattern matching with regular expressions
vul_file_iterator_data * p
vul_file_iterator & operator++()
Increment to the next file.
vul_file_iterator_data(char const *glob)
~vul_file_iterator_data()
void compile(char const *)
Compiles char* --> regexp.
void reset(char const *glob)
Run a new match.
std::string original_dirname_
static std::string dirname(char const *filename)
Return dirname.
char const * operator()()
Return the currently pointed-to pathname.