On 2019-08-22 21:07, Paul Dupuis via use-livecode wrote:
I reported what I thought was 3 bugs in 1 report in
https://quality.livecode.com/show_bug.cgi?id=22213. I have edited that
report to focus on a single bug - that the detailed files (and
probably the detailed folders) is broken for Unicode as every Unicode
character in a file name is encoded as %3F or ?. Originally I had
though that meant that there was a problem with urlEncode and
urlDecode as per bug
https://quality.livecode.com/show_bug.cgi?id=14015 that your
references Monte. However, I now consider that urlEncode and urlDecode
are NOT broken and bug 14015 is really a Documentation bug that the
urlEncode and urlDecode Dictionary entries should be updated.

Also, the detailed files and detailed folders doesn't need an array
returned (although that would be nice). This issue is the
percent-encoding is not following the standard convention of UTF8
encoding non-ASCII characters before percent encoding. LC should
follow industry conventions in this regard.

Strictly speaking urlEncode and urlDecode are indeed not broken - they are just very old. They were implemented when there were no universally accepted industry conventions for encoding of URLs (particularly those containing international characters).

They cannot be changed for obvious reasons - but we could do with urlEncodeRFC and urlDecodeRFC which would be string->string functions which do what is expected today. (And also not encode some characters in a way which is now not the 'standard du jour').

For the same reason that urlEncode and urlDecode cannot be changed, the detailed files/folders cannot be changed.

My general feeling here is that 'the detailed files' and 'the detailed folders' should be put out to pasture as they are grossly inefficient and difficult to work with.

Instead new functions 'fileInfo' and 'folderInfo' could replace them. They would take one or two parameters, the first a filename and the second an optional attribute.

If no attribute is specified then an array of all known attributes for the platform is returned; otherwise that specific attribute is returned.

e.g. fileInfo("foo.txt", "modification time") -> returns the modification time of foo.txt fileInfo("foo.txt") -> returns an array with keys such as "modification time" mapping to the obvious thing

I'd probably vote for the functions returning empty if the target didn't exist (rather than throwing an error), for the simple reason as you can't check for existence of a file and get its details in an atomic fashion (another process could decide to delete the file you just asserted existed between the 'there exists' and the 'fileInfo' call).

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