From 10f11e3359e86533f8c21a7dac393713f27a79bc Mon Sep 17 00:00:00 2001 From: Artur Jarosik Date: Mon, 24 Oct 2022 19:12:37 +0200 Subject: [PATCH] Update Amiga OS build --- src/factory.c | 2 +- src/gfx2mem.h | 2 +- src/help.c | 2 +- src/hotkeys.c | 10 +++++----- src/io.c | 14 +++++++++----- src/main.c | 5 ++--- src/pngformat.c | 1 + src/readline.c | 2 +- src/sdlscreen.c | 6 +++++- src/setup.c | 4 ++-- 10 files changed, 28 insertions(+), 20 deletions(-) diff --git a/src/factory.c b/src/factory.c index 0ad3338c..d7d2ef5b 100644 --- a/src/factory.c +++ b/src/factory.c @@ -2044,7 +2044,7 @@ int L_Run(lua_State* L) saved_directory = Get_current_directory(NULL, NULL, 0); full_path = strdup(script_arg); - #if defined (__AROS__) + #if defined (__AROS__) || defined(__amigaos__) // Convert path written on Linux/Windows norms to AROS norms : // Each element like ../ and ..\ is replaced by / // Each path separator \ is replaced by / diff --git a/src/gfx2mem.h b/src/gfx2mem.h index 311e885b..5c2879b6 100644 --- a/src/gfx2mem.h +++ b/src/gfx2mem.h @@ -19,7 +19,7 @@ */ #ifndef GFX2MEM_H_DEFINED #define GFX2MEM_H_DEFINED - +#include /// malloc() memory and log in case of error void * GFX2_malloc_and_log(size_t size, const char * file, unsigned line); diff --git a/src/help.c b/src/help.c index b2875467..b9541985 100644 --- a/src/help.c +++ b/src/help.c @@ -899,7 +899,7 @@ void Button_Stats(int btn) // Display free space if (mem_size != 0) { -#if defined(__AROS__) +#if defined(__AROS__) || defined(__amigaos__) char *colon = strchr(Main.selector.Directory, ':'); int len = strlen(Main.selector.Directory); if (colon) diff --git a/src/hotkeys.c b/src/hotkeys.c index e30e39d5..82b3035d 100644 --- a/src/hotkeys.c +++ b/src/hotkeys.c @@ -650,7 +650,7 @@ T_Key_config ConfigKey[NB_SHORTCUTS] = { true, KEY_b, // B #if defined(__amigaos4__) || defined(__AROS__) || defined(__MORPHOS__) || defined(__amigaos__) - KEY_C|GFX2_MOD_META // Right-Amiga + C + KEY_c|GFX2_MOD_META // Right-Amiga + C #else 0 #endif @@ -887,7 +887,7 @@ T_Key_config ConfigKey[NB_SHORTCUTS] = { true, KEY_F2, // F2 #if defined(__amigaos4__) || defined(__AROS__) || defined(__MORPHOS__) || defined(__amigaos__) - KEY_A|GFX2_MOD_META // Right-Amiga + A + KEY_a|GFX2_MOD_META // Right-Amiga + A #else 0 #endif @@ -900,7 +900,7 @@ T_Key_config ConfigKey[NB_SHORTCUTS] = { true, KEY_F2|GFX2_MOD_SHIFT, // Shift + F2 #if defined(__amigaos4__) || defined(__AROS__) || defined(__MORPHOS__) || defined(__amigaos__) - KEY_S|GFX2_MOD_META // Right-Amiga + S + KEY_s|GFX2_MOD_META // Right-Amiga + S #else 0 #endif @@ -913,7 +913,7 @@ T_Key_config ConfigKey[NB_SHORTCUTS] = { true, KEY_F3, // F3 #if defined(__amigaos4__) || defined(__AROS__) || defined(__MORPHOS__) || defined(__amigaos__) - KEY_O|GFX2_MOD_META // Right-Amiga + O + KEY_o|GFX2_MOD_META // Right-Amiga + O #else 0 #endif @@ -963,7 +963,7 @@ T_Key_config ConfigKey[NB_SHORTCUTS] = { #elif defined (__WIZ__) (KEY_JOYBUTTON+JOY_BUTTON_L) #elif defined(__amigaos4__) || defined(__AROS__) || defined(__MORPHOS__) || defined(__amigaos__) - KEY_Z|GFX2_MOD_META // Right-Amiga + Z + KEY_z|GFX2_MOD_META // Right-Amiga + Z #else 0 #endif diff --git a/src/io.c b/src/io.c index ec17f00b..4d36270e 100644 --- a/src/io.c +++ b/src/io.c @@ -270,7 +270,7 @@ char * Find_last_separator(const char * str) if (*str == PATH_SEPARATOR[0] #if defined(__WIN32__) || defined(WIN32) || *str == '/' -#elif __AROS__ +#elif defined(__AROS__) || defined(__amigaos__) || *str == ':' #endif ) @@ -285,7 +285,7 @@ word * Find_last_separator_unicode(const word * str) if (*str == (byte)PATH_SEPARATOR[0] #if defined(__WIN32__) || defined(WIN32) || *str == '/' -#elif __AROS__ +#elif defined(__AROS__) || defined(__amigaos__) || *str == ':' #endif ) @@ -302,7 +302,7 @@ char * Filepath_append_to_dir(const char * dir, const char * filename) if (dir[len-1] == PATH_SEPARATOR[0] #if defined(__WIN32__) || defined(WIN32) || dir[len-1] == '/' -#elif __AROS__ +#elif defined(__AROS__) || defined(__amigaos__) || dir[len-1] == ':' #endif ) @@ -400,7 +400,7 @@ void Append_path(char *path, const char *filename, char *reverse_path) { if (reverse_path) strcpy(reverse_path, separator_pos+1); - #if defined(__AROS__) + #if defined(__AROS__) || defined(__amigaos__) // Don't strip away the colon if (*separator_pos == ':') *(separator_pos+1)='\0'; else *separator_pos='\0'; @@ -431,7 +431,7 @@ void Append_path(char *path, const char *filename, char *reverse_path) if (len && (strcmp(path+len-1,PATH_SEPARATOR) #ifdef __WIN32__ && path[len-1]!='/' - #elif __AROS__ + #elif defined(__AROS__) || defined(__amigaos__) && path[len-1]!=':' // To avoid paths like volume:/dir #endif )) @@ -1072,6 +1072,10 @@ char * Get_current_directory(char * buf, word * * unicode, size_t size) } free(cur_dir); return buf; +#elif defined (__amigaos__) + char * ret = ""; + if (unicode != NULL) + *unicode = NULL; // no unicode support #else char * ret = getcwd(buf, size); if (ret == NULL) diff --git a/src/main.c b/src/main.c index 08c6ff17..c5c807a4 100644 --- a/src/main.c +++ b/src/main.c @@ -89,9 +89,7 @@ #include #endif -#if defined(__macosx__) -#include -#elif defined(__SWITCH__) +#if defined(__macosx__) || defined(__SWITCH__) || defined(__amigaos__) #include #elif defined(__FreeBSD__) #include @@ -1307,6 +1305,7 @@ void Program_shutdown(void) if (return_code) Error(return_code); return_code=Save_INI(&Config); + if (return_code) Error(return_code); } diff --git a/src/pngformat.c b/src/pngformat.c index 536523ad..8e823a13 100644 --- a/src/pngformat.c +++ b/src/pngformat.c @@ -28,6 +28,7 @@ #include #include #include +#include #include #if !defined(PNG_HAVE_PLTE) #define PNG_HAVE_PLTE 0x02 diff --git a/src/readline.c b/src/readline.c index d21e7046..8c815cd4 100644 --- a/src/readline.c +++ b/src/readline.c @@ -181,7 +181,7 @@ static int Valid_character(word c, enum INPUT_TYPE input_type) // AmigaOS4: Pas de ':' car utilisé pour les volumes. #if defined(WIN32) char forbidden_char[] = {'/', '|', '?', '*', '<', '>', ':', '\\'}; -#elif defined (__amigaos4__) || defined(__AROS__) +#elif defined (__amigaos4__) || defined(__AROS__) || defined(__amigaos__) char forbidden_char[] = {'/', '|', '?', '*', '<', '>', ':'}; #else char forbidden_char[] = {'/', '|', '?', '*', '<', '>'}; diff --git a/src/sdlscreen.c b/src/sdlscreen.c index 7f0c264c..61e69114 100644 --- a/src/sdlscreen.c +++ b/src/sdlscreen.c @@ -725,6 +725,7 @@ void Define_icon(void) #endif +#if !defined (__amigaos__) // General version: Load icon from file { #if defined(USE_SDL) @@ -735,9 +736,11 @@ void Define_icon(void) // gfx2.gif : 32x32 // gfx2.png : 48x48 icon_path = Filepath_append_to_dir(Data_directory, "gfx2.png"); - icon = IMG_Load(icon_path); + icon = IMG_Load(icon_path); if (icon == NULL) + { GFX2_Log(GFX2_WARNING, "Failed to load icon %s\n", icon_path); + } else { Uint32 pink; @@ -780,6 +783,7 @@ void Define_icon(void) } free(icon_path); } +#endif } void Set_mouse_position(void) diff --git a/src/setup.c b/src/setup.c index 1a5844c0..ede5a9c8 100644 --- a/src/setup.c +++ b/src/setup.c @@ -165,7 +165,7 @@ char * Get_data_directory(const char * program_dir) #if defined(__macosx__) // On MacOSX, it is stored in a special folder: to_append = "Contents/Resources/"; - #elif defined (__GP2X__) || defined (__gp2x__) || defined (__WIZ__) || defined (__CAANOO__) || defined(GCWZERO) || defined(__AROS__) || defined(__ANDROID__) + #elif defined (__GP2X__) || defined (__gp2x__) || defined (__WIZ__) || defined (__CAANOO__) || defined(GCWZERO) || defined(__AROS__) || defined(__ANDROID__) || defined(__amigaos__) // On GP2X, AROS and Android, executable is not in bin/ to_append = "data/"; #elif defined (__MINT__) @@ -212,7 +212,7 @@ char * Get_data_directory(const char * program_dir) char * Get_config_directory(const char * program_dir) { // AmigaOS4 provides the PROGDIR: alias to the directory where the executable is. - #if defined(__amigaos4__) || defined(__AROS__) + #if defined(__amigaos4__) || defined(__AROS__) || defined(__amigaos__) return strdup("PROGDIR:"); // GP2X #elif defined(__GP2X__) || defined(__WIZ__) || defined(__CAANOO__)