On 2015-09-23 21:02, Richard Gaskin wrote:
It's nice when it works like that.  I started using MC on Mac Classic,
and I ran into path issues early on because IIRC no such accommodation
was made for the Mac-specific ":" delimiter.   Rather than read the
docs I wrote to Dr. Raney, who referred me to the docs.

As I said, the fact it worked on Windows is entirely down to the Win32 APIs being lax - not by explicit design:

i.e. Win32 API calls happily treat / the same as \ in many instances - this was not the case in Mac Classic API calls.

If it had been me doing the Windows port I would have made the attempt to use such paths on Windows an error -as my personal opinion is that explicitly delimited strictness is always better than undocumented laxness in an environment where you intend things to be 'easy to use'.

So it looks like we're covered:  anyone looking for cross-platform
info can find what they need, and Windows-specific work is still
supported using Windows-specific path delimiters.

Again, sorry to beat the drum again here - Windows-specific path delimiters are supported for backwards-compatibility and no more than that, please avoid using them for new code.

Why would that be necessary if Windows-specific paths are supported,
as Mark just described above?

I realize I didn't explain why it is a bad idea to use \ in your paths - I shall now attempt to do so.

On UNIX systems '\' is nothing special - it can be part of a filename. This means that LiveCode has to treat it as part of a filename lest you want strange reports from users of your software when choosing certain filenames in an open/save dialog causes odd breakage. Now, fortunately, '/' *is* reserved on all platforms we support - thus this is the path separator that LiveCode understands.

Now, at the moment, we do not have much if any syntax which directly allows you to process file paths. However, it is not beyond the realm of possibility that (at some point) we will add syntax which allows easier manipulation. e.g.
  put the filename of filepath "foo/bar/zee.txt"
  put the folder of filepath "foo/bar/zee.txt"

This syntax would be predicated on using '/' uniformly as the path separator for all platforms. We can't make it work for both '\' and '/' as then it would mean you would not be able to access some valid paths on UNIX derived systems. Thus any application which does use the Windows-specific platform separator on Windows would find that they would not be able to use any new syntax that might appear in the future in this regard.

I should perhaps also point out that there are numerous places in the engine where it computes the leaf of a filepath - these will not work with '\' separated paths correctly for exactly the same reason.

Warmest Regards,

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