diff --git a/src/openrct2/platform/linux.c b/src/openrct2/platform/linux.c index 13da850a44..4b3952bd06 100644 --- a/src/openrct2/platform/linux.c +++ b/src/openrct2/platform/linux.c @@ -320,16 +320,16 @@ static dialog_type get_dialog_app(char *cmd, size_t *cmd_size) { bool platform_open_common_file_dialog(utf8 *outFilename, file_dialog_desc *desc, size_t outSize) { sint32 exit_value; char executable[MAX_PATH]; - char cmd[MAX_PATH]; - char result[MAX_PATH]; + char cmd[MAX_COMMAND_LENGTH]; + char result[MAX_COMMAND_LENGTH]; size_t size; dialog_type dtype; char *action = NULL; char *flags = NULL; - char filter[MAX_PATH] = { 0 }; + char filter[MAX_COMMAND_LENGTH] = { 0 }; char filterPatternRegex[64]; - size = MAX_PATH; + size = MAX_COMMAND_LENGTH; dtype = get_dialog_app(executable, &size); switch (dtype) { @@ -376,7 +376,7 @@ bool platform_open_common_file_dialog(utf8 *outFilename, file_dialog_desc *desc, } } - snprintf(cmd, MAX_PATH, "%s --title '%s' %s '%s/' ~ '%s'", executable, desc->title, action, desc->initial_directory, filter); + snprintf(cmd, MAX_COMMAND_LENGTH, "%s --title '%s' %s '%s/' ~ '%s'", executable, desc->title, action, desc->initial_directory, filter); break; case DT_ZENITY: action = "--file-selection"; @@ -420,12 +420,12 @@ bool platform_open_common_file_dialog(utf8 *outFilename, file_dialog_desc *desc, snprintf(filterTemp, countof(filterTemp), " --file-filter='%s | *'", (char *)language_get_string(STR_ALL_FILES)); safe_strcat(filter, filterTemp, countof(filter)); - snprintf(cmd, MAX_PATH, "%s %s --filename='%s/' %s --title='%s' / %s", executable, action, desc->initial_directory, flags, desc->title, filter); + snprintf(cmd, MAX_COMMAND_LENGTH, "%s %s --filename='%s/' %s --title='%s' / %s", executable, action, desc->initial_directory, flags, desc->title, filter); break; default: return 0; } - size = MAX_PATH; + size = MAX_COMMAND_LENGTH; execute_cmd(cmd, &exit_value, result, &size); if (exit_value != 0) { @@ -436,17 +436,17 @@ bool platform_open_common_file_dialog(utf8 *outFilename, file_dialog_desc *desc, log_verbose("filename = %s", result); if (desc->type == FD_OPEN && access(result, F_OK) == -1) { - char msg[MAX_PATH]; + char msg[MAX_COMMAND_LENGTH]; - snprintf(msg, MAX_PATH, "\"%s\" not found: %s, please choose another file\n", result, strerror(errno)); + snprintf(msg, MAX_COMMAND_LENGTH, "\"%s\" not found: %s, please choose another file\n", result, strerror(errno)); platform_show_messagebox(msg); return platform_open_common_file_dialog(outFilename, desc, outSize); } else if (desc->type == FD_SAVE && access(result, F_OK) != -1 && dtype == DT_KDIALOG) { - snprintf(cmd, MAX_PATH, "%s --yesno \"Overwrite %s?\"", executable, result); + snprintf(cmd, MAX_COMMAND_LENGTH, "%s --yesno \"Overwrite %s?\"", executable, result); - size = MAX_PATH; + size = MAX_COMMAND_LENGTH; execute_cmd(cmd, &exit_value, 0, 0); if (exit_value != 0) { @@ -463,25 +463,25 @@ utf8 *platform_open_directory_browser(utf8 *title) { size_t size; dialog_type dtype; sint32 exit_value; - char cmd[MAX_PATH]; + char cmd[MAX_COMMAND_LENGTH]; char executable[MAX_PATH]; - char result[MAX_PATH]; + char result[MAX_COMMAND_LENGTH]; char *return_value; - size = MAX_PATH; + size = MAX_COMMAND_LENGTH; dtype = get_dialog_app(executable, &size); switch (dtype) { case DT_KDIALOG: - snprintf(cmd, MAX_PATH, "%s --title '%s' --getexistingdirectory /", executable, title); + snprintf(cmd, MAX_COMMAND_LENGTH, "%s --title '%s' --getexistingdirectory /", executable, title); break; case DT_ZENITY: - snprintf(cmd, MAX_PATH, "%s --title='%s' --file-selection --directory /", executable, title); + snprintf(cmd, MAX_COMMAND_LENGTH, "%s --title='%s' --file-selection --directory /", executable, title); break; default: return 0; } - size = MAX_PATH; + size = MAX_COMMAND_LENGTH; execute_cmd(cmd, &exit_value, result, &size); if (exit_value != 0) { @@ -498,27 +498,27 @@ utf8 *platform_open_directory_browser(utf8 *title) { void platform_show_messagebox(const char * message) { size_t size; dialog_type dtype; - char cmd[MAX_PATH]; + char cmd[MAX_COMMAND_LENGTH]; char executable[MAX_PATH]; log_verbose(message); - size = MAX_PATH; + size = MAX_COMMAND_LENGTH; dtype = get_dialog_app(executable, &size); switch (dtype) { case DT_KDIALOG: - snprintf(cmd, MAX_PATH, "%s --title \"OpenRCT2\" --msgbox \"%s\"", executable, message); + snprintf(cmd, MAX_COMMAND_LENGTH, "%s --title \"OpenRCT2\" --msgbox \"%s\"", executable, message); break; case DT_ZENITY: - snprintf(cmd, MAX_PATH, "%s --title=\"OpenRCT2\" --info --text=\"%s\"", executable, message); + snprintf(cmd, MAX_COMMAND_LENGTH, "%s --title=\"OpenRCT2\" --info --text=\"%s\"", executable, message); break; default: SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_WARNING, "OpenRCT2", message, gWindow); return; } - size = MAX_PATH; + size = MAX_COMMAND_LENGTH; execute_cmd(cmd, 0, 0, 0); } diff --git a/src/openrct2/platform/platform.h b/src/openrct2/platform/platform.h index 29a81740b7..c1b0e755dc 100644 --- a/src/openrct2/platform/platform.h +++ b/src/openrct2/platform/platform.h @@ -35,6 +35,10 @@ #define MAX_PATH 260 #endif +#ifndef MAX_COMMAND_LENGTH +#define MAX_COMMAND_LENGTH 512 +#endif + #ifdef __MACOSX__ #define KEYBOARD_PRIMARY_MODIFIER KMOD_GUI #else