Re: Hugs, Mac OS X 10.1.5, and pathnames

Hamilton Richards <[email protected]>
Newsgroups gmane.comp.lang.haskell.hugs.bugs,gmane.comp.lang.haskell.hugs.user
Message-ID <p05111b04b9a7e11b30e9@[128.83.141.171]>
I originally wrote:

>  > 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?

At 6:02 AM +0100 9/1/02, Glynn Clements replied:
>
>The backslash isn't actually part of the pathname; it's added to
>prevent the shell from splitting the pathname into multiple arguments.
>The shell converts the backslash-space sequence into a space.
>
>The same issue arises in other languages; e.g. in C,
>
>	const char *name = "/Volumes/Macintosh 
>HD/Users/ham/Documents/whatever.hs";
>	FILE *fp = fopen(name, "r");
>
>would work, but including the backslash would break it.
>
>--
>Glynn Clements <[email protected]>
>


I do actually understand that the backslash isn't part of the 
pathname. My question is whether there's any reason Hugs couldn't 
treat backslashes in its command line as C shells do.

I suspect it's just something no one thought about, because spaces 
are uncommon in unix file names.

--Ham

-- 
------------------------------------------------------------------
Hamilton Richards                Department of Computer Sciences
Senior Lecturer                  The University of Texas at Austin
512-471-9525                     1 University Station C0500
Taylor Hall 5.138                Austin, Texas 78712-1188
[email protected]                [email protected]
------------------------------------------------------------------
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.