diff --git a/platform/macclassic.c b/platform/macclassic.c index 7af1740..f3f76a1 100644 --- a/platform/macclassic.c +++ b/platform/macclassic.c @@ -23,6 +23,7 @@ #include #include #include +#include #endif #define __PHYSICSFS_INTERNAL__ @@ -184,13 +185,36 @@ char *__PHYSFS_platformCvtToDependent(const char *prepend, const char *dirName, const char *append) { - BAIL_MACRO(ERR_NOT_IMPLEMENTED, NULL); + int len = ((prepend) ? strlen(prepend) : 0) + + ((append) ? strlen(append) : 0) + + strlen(dirName) + 1; + const char *src; + char *dst; + char *retval = malloc(len); + BAIL_IF_MACRO(retval == NULL, ERR_OUT_OF_MEMORY, NULL); + + if (prepend != NULL) + { + strcpy(retval, prepend); + dst = retval + strlen(retval); + } /* if */ + else + { + *retval = '\0'; + dst = retval; + } /* else */ + + for (src = dirName; *src; src++, dst++) + *dst = ((*src == '/') ? ':' : *src); + + *dst = '\0'; + return(retval); } /* __PHYSFS_platformCvtToDependent */ -/* Much like my college days, try to sleep for 10 milliseconds at a time... */ void __PHYSFS_platformTimeslice(void) { + SystemTask(); } /* __PHYSFS_platformTimeslice */ @@ -203,7 +227,13 @@ LinkedStringList *__PHYSFS_platformEnumerateFiles(const char *dirname, char *__PHYSFS_platformCurrentDir(void) { - BAIL_MACRO(ERR_NOT_IMPLEMENTED, NULL); + /* + * I don't think MacOS has a concept of "current directory", beyond + * what is grafted on by a given standard C library implementation, + * so just return the base dir. + * We don't use this for anything crucial at the moment anyhow. + */ + return(__PHYSFS_platformCalcBaseDir(NULL)); } /* __PHYSFS_platformCurrentDir */