On Mon, Dec 4, 2017 at 3:01 AM, Paul Eggert <egg...@cs.ucla.edu> wrote: > Dmitry Goncharov wrote: >>> >>> flags |= GLOB_ONLYDIR | GLOB_MARK; >>> >>> and then at the end, filter out all matches that aren't marked with >>> trailing '/'. This would avoid creating a new GLOB_XXX option and would >>> probably be easier to implement. >>> >> Please have a look at this implementation of your idea. > > > I'm not quite following how it's an implementation, since I don't see where > it does anything like "flags |= GLOB_ONLYDIR | GLOB_MARK;". Maybe there's > another part of the patch you're missing?
glob sets GLOB_MARK when it calls itself recursively when the pattern has a trailing slash. > > The variable "filter" is a boolean and should be of type bool. sure > > That comment and code look over-complicated. i agree. Will remove the comment. > Can't you simply copy nonnull entries in-place, in a single pass? The first pass calls is_dir and frees and resets files. Do you mean to also do copying in this very pass? > That way, the filtered order will be the same as the original order. The stable algorithm results in more iterations and more copying. Are you sure? regards, Dmitry