File: accept.cc

package info (click to toggle)
bobcat 6.11.00-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 15,292 kB
  • sloc: cpp: 21,370; fortran: 6,507; makefile: 2,787; sh: 724; perl: 401; ansic: 26
file content (27 lines) | stat: -rw-r--r-- 748 bytes parent folder | download | duplicates (3)
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
}