summaryrefslogtreecommitdiff
path: root/cg.c
diff options
context:
space:
mode:
authorJohn van Groningen2004-04-19 15:10:53 +0000
committerJohn van Groningen2004-04-19 15:10:53 +0000
commit4e726a3547fd84a8741b4662efbac664bf8894d7 (patch)
tree622009e005a5d34cd9e2ad467606d055920e63ca /cg.c
parentimplement tuple result for centry on IA32 (diff)
port to gcc on Mac OS X
Diffstat (limited to 'cg.c')
-rw-r--r--cg.c42
1 files changed, 27 insertions, 15 deletions
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);
}