On Sun, 18 Mar 2007 19:30:35 +0000 Nicholas Clark <[EMAIL PROTECTED]> wrote:
> On Sun, Mar 18, 2007 at 03:35:14PM +0000, Jonathan Worthington wrote: > > Mike Mattie (via RT) wrote: > > >While mucking around in src/library.c I noticed some cut & paste > > >duplication. It looked like a fairly simple hoist so I have > > >attached the changes I made. > > > [snip] > > > > > > while ( (cnv = strchr(path->strstart, '/')) ) > > > *cnv = '\\'; > > > [snip] > But painfully inefficiently. (Probably this doesn't matter here) > > I suspect the loop wants to become > > cnv = path->strstart; > while (*cnv) { > if (*cnv == '/') > *cnv = '\\'; > } > ++cnv; > } > > which should at least be O(n) rather than O(n²) for a string of > length n. you are correct. I do like the strchr() call over a manual iteration though. GCC will aggressively optimize some of the standard library string functions, and I would guess that many other compilers do as well. It at least leaves the door open to picking up the benefits of future hardware/compiler changes. It's also more friendly to static-analysis. > > I think in the long run we'll want to provide a more generic way to > > transform paths to the way the current platform likes them, but in > > the meantime I'm very much up for reducing copy and paste code; > > I'll apply this tonight if no other Win32ers beat me to it. :-) > > I don't disagree with that longer term plan. I like it. typically this kind of stuff ends up in config.h with auto-tools projects, but the file becomes a big heap. Something like platform_io.h might be a nice route. gather all of the IO related platform quirks into one spot, topically organized. > On that subject, I remember 10 years ago so so, network drives on MS > DOS named ux: and uy: > Are 2 letter drive names still valid? Do they confuse most code? > > Nicholas Clark
signature.asc
Description: PGP signature