Path: utzoo!utgpu!water!watmath!clyde!rutgers!rochester!PT.CS.CMU.EDU!andrew.cmu.edu!jv0l+
From: jv0l+@andrew.cmu.edu (Justin Chris Vallon)
Newsgroups: comp.sys.mac
Subject: Re: Reading a full pathname in HFS
Message-ID: 
Date: 11 Dec 87 10:31:31 GMT
Organization: Carnegie Mellon University
Lines: 37
In-Reply-To: <3551@hoptoad.uucp>

In <3551@hoptoad.uucp>, Tim Maroney said:
>Once you have the (volume, directory) pair, you can call PBGetCatInfo to
>find out what the folder they refer to is named.  Then just concatenate that
>with your reply.fName, and you've got a full pathname.  Two HFS traps and a
>little trivial string twiddling, and it's party time in Mac City.

Now, I'm sure that this will be flamed if incorrect, but doesn't
PBGetCatInfo return the directory name, not the path name?  In other
words, let's say you have a path "HardDisk:Utils:File:ResEdit".

The WDRN refers to "HardDisk:Utils:File:",  VolRefNum would refer to
"HardDisk", and dirId to the folder that "ResEdit" lives in.  If you
PBGetCatInfo on dirId, the name of the folder is "File", which is
almost what you want.

Basically, you would have to repeat the GetCatInfo, moving up the
tree each time by grabbing the parent's dirId until the dirId becomes
2 which is the root dirId. Some pseudo-code (horrors):

pathName := reply.fName
convert reply.vRefNum into volRefNum and dirId
while dirId <> 2 do (* The file is in a folder, so prepend it's name *)
  put directory-name from pbGetCatInfo call & ':' in front of path
  dirId gets the parent's dirId
put volume-name from getVolInfo call & ':' in front of path

Notice that this could pose a problem if the final path-name is
longer than 255 characters (at least in Pascal).

Maybe I totally struck out... is it getting warm in here?  Did
somebody turn up the heat?

-----
Justin Vallon/Box 3077/1000 Morewood Avenue/Pittsburgh, PA 15213/(412) 268-4528
Arpa: justin.vallon@andrew.cmu.edu    BitNet: justin.vallon%andrew@cmccvb
UUCP: ...!{psuvax1, harvard}!andrew.cmu.edu!justin.vallon
-----