It is also how glob works in other languages, such as perl python and go, if that is seens as more relevant.
However, only some of them have escaping, instead [*] would be used to match a literal *. I can remove the \, but then [ is more needed. On Fri, May 13, 2016 at 4:38 PM, Per Hedbor <p...@hedbor.org> wrote: > Well. Is [ and \ really that common in glob patterns? (the addition of > quoting and making [ a control character being the incompatible > changes) > > It is possible to use 8.0::glob (not yet in place). > > Or this, which is future compatible (8.0:: would be removed after a while): > > add_constant( "glob", lambda(array|string a, array|string b) { > array(string)|string compat(array|string what) { > if(arrayp(what)) return map(what,this_function); > return replace(what, (["\\":"\\\\", "[":"\\[" ])); > }; > return !!glob(compat(a),b); > }); > > (since I don't think any of the array version are used in roxen, it > can be simplified a bit.. :)) > > Anyway, the glob function in 8.1 complies with the definition of glob > in wikipedia, whatever that is worth. > > As for why glob was modified: > > The lack of quoting made it impossible to match * or ?. > The [ is less important to me at least, I just added that to be > feature complete (or, well, to the 'basic' glob pattern syntax). > > After perusing the roxen source there are very few locations where the > pattern is not a simple constant *.<ext>, only a few places takes the > pattern as input from the user (web developer). In most cases this > seems to then be matched to a mime type ([ and \ being somewhat > uncommon in those) or a file (not path) name (no \, theoretically [ > can occur), > > Of course, custom code can do whatever. > > On Fri, May 13, 2016 at 4:10 PM, Jonas Walldén @ Pike developers > forum <10...@lyskom.lysator.liu.se> wrote: >> Just saw Per's checkin (781fcde2) in 8.1: >> >> > Extended glob pattern syntax: >> > o \ can now be used to quote special characters in the pattern >> > o [ can be used for ranges of characters ([bx] [a-c0-9] [^a] etc). >> > >> > Also changed glob to return the matching glob instead of 1 when an >> > array is passed as the first (pattern) argument. >> > >> > This can be used to remove some loops where you want to do >> > different things depending on which pattern matched. >> > >> > Both these changes are incompatible. >> >> Can we please put this in a new method or use opt-in with an extra >> flag? I'm not too worried about the return value, but the changes in >> glob parsing sound problematic to me. >> >> At least for our customers there are plenty of globs in user data >> (RXML code, system configs, custom modules etc) that could misbehave >> silently, i.e. without producing compile-time errors.