1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
|
#include "glob.ih"
void Glob::accept()
{
auto begin = d_share->begin = new char *[d_share->globStruct.gl_pathc];
auto dest = begin;
auto gsTypeEnd = d_share->gsType.end();
for
(
auto src = d_share->globStruct.gl_pathv,
end = src + d_share->globStruct.gl_pathc;
src != end;
++src
)
{
if (d_share->gsType.find(
static_cast<Type>(Stat(Stat::LStat, *src).type() & ANY))
!= gsTypeEnd
)
*dest++ = *src; // copy the pointer if type is OK
}
d_share->size = dest - begin; // compute the # of accepted entries
d_share->end = dest; // end points beyond the last one
}
|