From fdfe6b00e0e8558050ebd6e6c7cb33b3d789be4f Mon Sep 17 00:00:00 2001 From: Jeroen van Rijn Date: Wed, 31 Jul 2024 15:16:09 +0200 Subject: Improve output path checking Fixes #4001 --- src/build_settings.cpp | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) (limited to 'src/build_settings.cpp') diff --git a/src/build_settings.cpp b/src/build_settings.cpp index faa8ad2b6..3e2d11101 100644 --- a/src/build_settings.cpp +++ b/src/build_settings.cpp @@ -2011,15 +2011,20 @@ gb_internal bool init_build_paths(String init_filename) { } } + String output_file = path_to_string(ha, bc->build_paths[BuildPath_Output]); + defer (gb_free(ha, output_file.text)); + // Check if output path is a directory. if (path_is_directory(bc->build_paths[BuildPath_Output])) { - String output_file = path_to_string(ha, bc->build_paths[BuildPath_Output]); - defer (gb_free(ha, output_file.text)); gb_printf_err("Output path %.*s is a directory.\n", LIT(output_file)); return false; } - if (!write_directory(bc->build_paths[BuildPath_Output].basename)) { + gbFile output_file_test; + gbFileError output_test_err = gb_file_open_mode(&output_file_test, gbFileMode_Append | gbFileMode_Rw, (const char*)output_file.text); + defer (gb_file_close(&output_file_test)); + + if (output_test_err != 0) { String output_file = path_to_string(ha, bc->build_paths[BuildPath_Output]); defer (gb_free(ha, output_file.text)); gb_printf_err("No write permissions for output path: %.*s\n", LIT(output_file)); -- cgit v1.2.3