Hugs, Mac OS X 10.1.5, and pathnames

Hamilton Richards hrichrds@swbell.net
Sat, 31 Aug 2002 16:20:45 -0500


In OS X, pathnames have two distinct syntaxes. The GUI uses the pre-X 
syntax, in which a pathname begins with a volume name and the 
separator is `:', as in

	Macintosh HD:Users:ham:Documents:whatever.hs

In the Darwin (i.e., unix) command-line "underworld", a pathname 
begins with /Volumes, spaces are escaped with `\', and the separator 
is `/', as in

	/Volumes/Macintosh\ HD/Users/ham/Documents/whatever.hs

When you drag a file icon onto the command line, Terminal does the 
right thing-- it converts the pathname from the GUI syntax to the 
Darwin syntax, and utilities such as more work just as they should.

Hugs, however, doesn't do so well. For example,

    Prelude> :l /Volumes/Macintosh\ HD/Users/ham/Documents/whatever.hs
    Reading file "/Volumes/Macintosh\":
    ERROR "/Volumes/Macintosh\" - Unable to open file "/Volumes/Macintosh\"

Quoting the pathname changes the problem, but doesn't cure it:

    Prelude> :l "/Volumes/Macintosh\ HD/Users/ham/Documents/whatever.hs"
    ERROR - Missing `\' terminating string literal gap

Apparently what's confusing Hugs is the `\', because removing it 
cures the problem:

    Prelude> :l "/Volumes/Macintosh HD/Users/ham/Documents/whatever.hs"
    Reading file "/Volumes/Macintosh HD/Users/ham/Documents/whatever.hs":

Is this problem unavoidable, or is it just an oversight?

Thanks,

--Ham
-- 
------------------------------------------------------------------
Hamilton Richards                Department of Computer Sciences
Senior Lecturer                  Mail Code C0500
512-471-9525                     The University of Texas at Austin
Taylor Hall 5.138                Austin, Texas 78712-1188
ham@cs.utexas.edu                hrichrds@swbell.net
------------------------------------------------------------------