3 ms·
Old Macs (which I grew up with) had even more baroque path handling than mentioned in the blog post: Double colon (::) meant the same as .. on Unix/DOS, that
by VorpalWay 4mo ago
Old Macs (which I grew up with) had even more baroque path handling than mentioned in the blog post:
Double colon (::) meant the same as .. on Unix/DOS, that is "go up one level". So you have to be careful when concatenating paths to not get double separators.
Paths starting with : were relative. If a path didn't start with the separator, the first component was the volume name (disk partition). Again, quite unlike Unix.
Also, remember it was common to have spaces in names on Mac, even the default harddrive on Macs was named "Macintosh HD". So an absolute path like "Macintosh HD:Programs:MacWrite" would have been common. (I grew up with Macs in Swedish, so I'm back translating the names here, could be that the names were slightly different in English.)
- fragmede 4mo agoCurrent macOS Finder let's you name files with a slash in them, rendered as a : in the terminal.
- microtonal 4mo agoI think that the slash might be the rendering though? If you $ touch "foo:bar" In the Terminal, then Finder renders it as foo/bar. So who is lying, how is it stored in the directory entry in APFS itself?
- kps 4mo agoAPFS stores it as "foo:bar". (I don't think the filesystem itself cares what's in a name.)
- VorpalWay 4mo agoIsn't that just what the original article that we all commented on described? I don't understand what you are trying to add to the conversation here.
- BoingBoomTschak 4mo agoFun things is that I encountered that for the first time when using Clozure CL (https://ccl.clozure.com/ https://ccl.clozure.com/) which quotes colons when converting paths to string even on Linux: $ cat <<'EOF' >x.lisp heredoc> (require :uiop) heredoc> (let ((p (make-pathname :name "foo:bar"))) heredoc> (format t "~@{~A~%~}" (namestring p) (uiop:native-namestring p))) heredoc> EOF $ ccl -b -Q -l x.lisp </dev/null foo\:bar foo:bar $ sbcl --script x.lisp foo:bar foo:bar