Improve output path checking

Fixes #4001
This commit is contained in:
Jeroen van Rijn
2024-07-31 15:16:09 +02:00
parent 8a9901aeab
commit fdfe6b00e0

View File

@@ -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));