On 2015-09-23 18:53, Richard Gaskin wrote:
A regression with UNC paths was recently fixed:
<http://quality.runrev.com/show_bug.cgi?id=15814>

Most interesting to me there is that it allows the use of the
Windows-specific "\" as a file path delimiter.

This is very much a case of 'unintended consequences' or 'just because you can do something, it doesn't mean you should' (and why maintaining, updating, evolving the engine whilst retaining backwards compatibility can be very very difficult at times).

I didn't know OS-specific delimiters could be used.

That's good - you shouldn't use them - it would probably be best that everyone forgets that you can, and try to ensure you don't use them anywhere in new applications :)

Can I use backslash in all file I/O calls in Windows?  What are the
rules that would let me know when I can can use platform-specific file
path delimiters, and when I need to use the customary Unix-style "/"
as we normally see on all platforms?

The fact they ever worked was a side-effect of the fact that Win32 API calls are quite tolerant of file path separators. Both '/' and '\' are reserved in Windows filenames, and higher-level APIs (which the engine previously used) can happily accept both.

As UNIX systems happily accept '\' as a filename (leaf) character, the engine never did any higher-level validation / processing / checking of such things (as things like foo/bar\foo is a perfectly valid path on UNIX). This meant that when the engine was ported to Windows initially, such things would pass straight through and thus (in many cases) work fine - even though the interpretation of such a thing (with the idea that / becomes \ on Windows) is actually quite different between Windows and non-Windows in this setting.

Over time, we've tightened up the way path manipulation works (in particular, the engine now explicitly turns a relative path into an absolute path in a platform-independent fashion to ensure consistency) and unfortunately this work broke this long standing ability. We have now (through fixing this bug) preserved this functionality because there is a fair bit of code out there which depends on it.

However, as I said above, don't use OS specific separators in your paths in new apps / code. Always use '/' and let the engine do the right thing - you'll be better off that way :)

Mark.

--
Mark Waddingham ~ m...@livecode.com ~ http://www.livecode.com/
LiveCode: Everyone can create apps

_______________________________________________
use-livecode mailing list
use-livecode@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode

Reply via email to