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.