From 4e726a3547fd84a8741b4662efbac664bf8894d7 Mon Sep 17 00:00:00 2001 From: John van Groningen Date: Mon, 19 Apr 2004 15:10:53 +0000 Subject: port to gcc on Mac OS X --- cg.c | 42 +++++++++++++++++++++++++++--------------- 1 file changed, 27 insertions(+), 15 deletions(-) (limited to 'cg.c') diff --git a/cg.c b/cg.c index 9db12d3..7275380 100644 --- a/cg.c +++ b/cg.c @@ -396,25 +396,37 @@ char *this_module_name; # define FOLDER_SEPARATOR ':' #endif -#ifdef PROJECT_BUILDER +#if defined (POWER) && defined (GNU_C) static FILE *fopen_with_file_name_conversion (char *file_name,char *mode) { - static char file_name_s[257]; - char *p; + FSSpec fs_spec; + FSRef fs_ref; + CFURLRef CFURL_ref; + char buffer[512+1]; + int string_size; + Boolean r; + OSErr e; + + buffer[0]=strlen (file_name); + strcpy (&buffer[1],file_name); + + e=FSMakeFSSpec (0/*vRefNum*/,0/*dirID*/,buffer,&fs_spec); + if (e!=noErr) + return NULL; + + e=FSpMakeFSRef (&fs_spec,&fs_ref); + if (e!=noErr) + return NULL; + + CFURL_ref=CFURLCreateFromFSRef (NULL,&fs_ref); - for (p=file_name; *p!='\0' && *p!=':'; ++p) - ; + string_size=512; + r=CFURLGetFileSystemRepresentation (CFURL_ref,1,buffer,string_size); - if (*p==':'){ - strcpy (file_name_s,"/Volumes/"); - strcat (file_name_s,file_name); - - for (p=file_name_s; *p!='\0'; ++p) - if (*p==':') - *p='/'; - - file_name=file_name_s; - } + if (!r) + return NULL; + + file_name=buffer; return fopen (file_name,mode); } -- cgit v1.2.3