How to change dir to $HOME?
Archives Forums/MacOS X Discussion/How to change dir to $HOME?| 
 | ||
| I would like to be able to put the preferences file for my game in ~/Library/Preferences. Can anyone think of a good way to do this? Remember it has to work whether the app is stored, whether that is in /Applicaltions/ or ~/Desktop/ or something! It would be nice if there was a command such as ChangeToHomeDir() or GetHomeDir()... For now though, I would be happy with any solution, even if it meant interacting with C code (there isn't even any easy way to do it in C either is there AFAIK?) | 
| 
 | ||
| You can use the "getenv_" function to get an environment variable, for example, the $HOME env variable: 
Home$ = getenv_("HOME")
 | 
| 
 | ||
| Hi, getenv_("HOME") will probably work from within the IDE but probably not from a standalone app. Try this. It ain't pretty, but should work: 
Const kUserDomain=-32763
Const kVolumeRootFolderType=Asc("r") Shl 24 | Asc("o") Shl 16 | Asc( "o") Shl 8 | Asc("t")
Extern
	Function FSFindFolder( vRefNum,folderType,createFolder,foundRef:Byte Ptr )
	Function FSRefMakePath( ref:Byte Ptr,path:Byte Ptr,maxPathsize )
End Extern
Function HomeDir$()
	Local buf:Byte[1024],ref:Byte[80]
	
	If FSFindFolder( kUserDomain,kVolumeRootFolderType,False,ref ) Return
	If FSRefMakePath( ref,buf,1024 ) Return
	
	Return String.FromCString( buf )
	
End Function
Print HomeDir()
ChangeDir HomeDir()
I agree that this should be 'builtin'. | 
| 
 | ||
| Blimey. Don't have a clue how that code works. But thank you! :-) | 
| 
 | ||
| Blimey. Don't have a clue how that code works. Either do I really! It was the result of an intense google session, and it's the only variation I found that worked on both 10.2 and 10.3 |