[MlMt] Debugging custom keystrokes (another newbie question)

David Ledger MailMate at ivdcs.co.uk
Sun Nov 12 09:36:24 EST 2017


On 11 Nov 2017, at 23:48, Bill Cole wrote:

> On 10 Nov 2017, at 16:03 (-0500), David Ledger wrote:
>
>> On 10 Nov 2017, at 4:04, Paul Sture wrote:
>>
>>> On 6 Nov 2017, at 14:54, David Ledger wrote:
> [...]
>>>> ‘/‘ is to be avoided in filenames in Unix systems generally. 
>>>> Having worked with Unix since (just) before the Mac I’ve never 
>>>> tried using it with OSX. It may (or may not) work, but it’s a 
>>>> low-level fiddle-around if it does and could break. Similarly I 
>>>> avoid ‘:’ as that used to be the pathname separator pre-OSX, 
>>>> even though it wasn’t as visible to users. There used to be a 
>>>> compatibility fiddle-around for that, but Apple may have dropped 
>>>> that by now.
>>>>
>>>
>>> If I remember correctly, ":" is used by AppleScript as the pathname 
>>> separator.
>>
>> Pre-OSX that was generally the case on the Mac, and so filenames with 
>> embedded ‘:’ characters were not allowed. OSX, being Unix based 
>> uses ‘/‘ instead, and added workarounds so that files with either 
>> would sort of work, but they had to be invisibly changed to allow 
>> things to do so.
>
> Not exactly. Current HFS+ & HFSX (still the predominant filesystems 
> for OSX/macOS) still use ':' on-disk as the path delimiter like all 
> other descendants of the original HFS. The kernel's "virtual file 
> system" (VFS) layer swaps ':' and '/' in paths and filenames depending 
> on context so that POSIX (which is the formal standards family that 
> defines "Unix-like" OSs) and Cocoa code uses '/' as the path delimiter 
> while Carbon code uses ':' (if it even uses the concept of a delimiter 
> at all.) You can create a file named ':' in a shell session but the 
> Finder will show '/' as its name, as will the low-level HFS+ data 
> structures on-disk.
>
>> There is a Unix system library routine that takes a string of 
>> characters as an argument and returns a pointer to a file on the 
>> basis of that string being a file path. The string has to consist of 
>> sub-strings separated by some delimiter.
>
> Yes, that would be the open() and fopen() system calls, defined in 
> POSIX as taking a /-delimited path and access mode, returning a file 
> descriptor. The Cocoa API has direct analogs, the Carbon API does not. 
> Using the Carbon File Manager, a program can use the filesystem 
> without any concept of a pathname delimiter.

We’ve wandered off-topic a bit (a lot?) here, but there is no 
‘on-disk’ path delimiter. Pathnames are at a higher level. Those 
system calls use the underlying library routine I mentioned, which, 
IIRC, returns a file reference (inode). I haven’t programmed at this 
level for a few years now, but would I hope that Carbon under OSX still 
uses the same routines internally, even if it doesn’t expose them to 
the programmer. Probably a few bodges in there.

I still avoid ‘/‘ in filenames because I want all my data to be 
usable over NFS from Unix systems. And it sound like continuing to avoid 
‘:’ is a good idea.

David




More information about the mailmate mailing list