diff --git a/src/main.c b/src/main.c index 832737ea..6aa059e7 100644 --- a/src/main.c +++ b/src/main.c @@ -104,6 +104,8 @@ int main(int argc, char **argv) { HINSTANCE lib = LoadLibrary("user32.dll"); int (*SetProcessDPIAware)() = (void*) GetProcAddress(lib, "SetProcessDPIAware"); SetProcessDPIAware(); +#elif defined(__morphos__) + setlocale(LC_ALL, ""); #else signal(SIGPIPE, SIG_IGN); #endif diff --git a/src/platform/morphos.c b/src/platform/morphos.c index 029cd20e..837e812f 100755 --- a/src/platform/morphos.c +++ b/src/platform/morphos.c @@ -6,29 +6,27 @@ #include "morphos.h" #define MAX_DOS_NAME FILENAME_MAX -static char *getFullPath(const char *path) +static BOOL getFullPath(const char *path, char *result) { - char *appPath = malloc(sizeof(char) * MAX_DOS_NAME); BPTR pathLock = Lock(path, SHARED_LOCK); if (pathLock) { - NameFromLock(pathLock, appPath, sizeof(char) * MAX_DOS_NAME); + NameFromLock(pathLock, result, sizeof(char) * MAX_DOS_NAME); UnLock(pathLock); - return appPath; + return TRUE; } - return NULL; + return FALSE; } -static char *getCurrentPath(void) +static BOOL getCurrentPath(char *result) { - char *appPath = malloc(sizeof(char) * MAX_DOS_NAME); - BOOL success = GetCurrentDirName(appPath, sizeof(char) * MAX_DOS_NAME); + BOOL success = GetCurrentDirName(result, sizeof(char) * MAX_DOS_NAME); if (!success) { - strncpy(appPath, "PROGDIR:", sizeof(char) * MAX_DOS_NAME); + return TRUE; } - return appPath; + return FALSE; } char *_fullpath(const char *path) @@ -46,16 +44,24 @@ char *_fullpath(const char *path) if (!strcmp(path, "./lite")) { // TODO: Add code to get the name of the executable - strcpy(result, getFullPath("PROGDIR:lite")); - return result; + if (getFullPath("PROGDIR:lite", result)) + { + return result; + } } if (!strcmp(path, ".")) { - strcpy(result, getCurrentPath()); - return result; + if(getCurrentPath(result)) + { + return result; + } } - strcpy(result, getFullPath(path)); - return result; + if (getFullPath(path, result)) + { + return result; + } + + return NULL; } diff --git a/src/platform/morphos.h b/src/platform/morphos.h index 7b94ab80..63434aea 100755 --- a/src/platform/morphos.h +++ b/src/platform/morphos.h @@ -3,6 +3,7 @@ #include #include +#include char *_fullpath(const char *);