mirror of
https://github.com/Ed94/Odin.git
synced 2026-08-06 15:48:51 +00:00
Keep MSVC happy with secure versions of C calls
This commit is contained in:
+8
-8
@@ -17,11 +17,11 @@ gb_internal bool recursively_delete_directory(wchar_t *wpath_c) {
|
|||||||
|
|
||||||
wchar_t dir_path[MAX_PATH] = {};
|
wchar_t dir_path[MAX_PATH] = {};
|
||||||
wchar_t filename[MAX_PATH] = {};
|
wchar_t filename[MAX_PATH] = {};
|
||||||
wcscpy(dir_path, wpath_c);
|
wcscpy_s(dir_path, wpath_c);
|
||||||
wcscat(dir_path, L"\\*");
|
wcscat_s(dir_path, L"\\*");
|
||||||
|
|
||||||
wcscpy(filename, wpath_c);
|
wcscpy_s(filename, wpath_c);
|
||||||
wcscat(filename, L"\\");
|
wcscat_s(filename, L"\\");
|
||||||
|
|
||||||
|
|
||||||
WIN32_FIND_DATAW find_file_data = {};
|
WIN32_FIND_DATAW find_file_data = {};
|
||||||
@@ -31,21 +31,21 @@ gb_internal bool recursively_delete_directory(wchar_t *wpath_c) {
|
|||||||
}
|
}
|
||||||
defer (FindClose(hfind));
|
defer (FindClose(hfind));
|
||||||
|
|
||||||
wcscpy(dir_path, filename);
|
wcscpy_s(dir_path, filename);
|
||||||
|
|
||||||
for (;;) {
|
for (;;) {
|
||||||
if (FindNextFileW(hfind, &find_file_data)) {
|
if (FindNextFileW(hfind, &find_file_data)) {
|
||||||
if (is_dots_w(find_file_data.cFileName)) {
|
if (is_dots_w(find_file_data.cFileName)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
wcscat(filename, find_file_data.cFileName);
|
wcscat_s(filename, find_file_data.cFileName);
|
||||||
|
|
||||||
if (find_file_data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) {
|
if (find_file_data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) {
|
||||||
if (!recursively_delete_directory(filename)) {
|
if (!recursively_delete_directory(filename)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
RemoveDirectoryW(filename);
|
RemoveDirectoryW(filename);
|
||||||
wcscpy(filename, dir_path);
|
wcscpy_s(filename, dir_path);
|
||||||
} else {
|
} else {
|
||||||
if (find_file_data.dwFileAttributes & FILE_ATTRIBUTE_READONLY) {
|
if (find_file_data.dwFileAttributes & FILE_ATTRIBUTE_READONLY) {
|
||||||
_wchmod(filename, _S_IWRITE);
|
_wchmod(filename, _S_IWRITE);
|
||||||
@@ -53,7 +53,7 @@ gb_internal bool recursively_delete_directory(wchar_t *wpath_c) {
|
|||||||
if (!DeleteFileW(filename)) {
|
if (!DeleteFileW(filename)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
wcscpy(filename, dir_path);
|
wcscpy_s(filename, dir_path);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (GetLastError() == ERROR_NO_MORE_FILES) {
|
if (GetLastError() == ERROR_NO_MORE_FILES) {
|
||||||
|
|||||||
@@ -1117,7 +1117,11 @@ gb_internal void init_universal(void) {
|
|||||||
int minimum_os_version = 0;
|
int minimum_os_version = 0;
|
||||||
if (build_context.minimum_os_version_string != "") {
|
if (build_context.minimum_os_version_string != "") {
|
||||||
int major, minor, revision = 0;
|
int major, minor, revision = 0;
|
||||||
|
#if defined(GB_SYSTEM_WINDOWS)
|
||||||
|
sscanf_s(cast(const char *)(build_context.minimum_os_version_string.text), "%d.%d.%d", &major, &minor, &revision);
|
||||||
|
#else
|
||||||
sscanf(cast(const char *)(build_context.minimum_os_version_string.text), "%d.%d.%d", &major, &minor, &revision);
|
sscanf(cast(const char *)(build_context.minimum_os_version_string.text), "%d.%d.%d", &major, &minor, &revision);
|
||||||
|
#endif
|
||||||
minimum_os_version = (major*10000)+(minor*100)+revision;
|
minimum_os_version = (major*10000)+(minor*100)+revision;
|
||||||
}
|
}
|
||||||
add_global_constant("ODIN_MINIMUM_OS_VERSION", t_untyped_integer, exact_value_i64(minimum_os_version));
|
add_global_constant("ODIN_MINIMUM_OS_VERSION", t_untyped_integer, exact_value_i64(minimum_os_version));
|
||||||
|
|||||||
@@ -14,6 +14,8 @@
|
|||||||
#undef NOMINMAX
|
#undef NOMINMAX
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
#define GB_WINDOWS_H_INCLUDED
|
#define GB_WINDOWS_H_INCLUDED
|
||||||
#define GB_IMPLEMENTATION
|
#define GB_IMPLEMENTATION
|
||||||
#include "gb/gb.h"
|
#include "gb/gb.h"
|
||||||
|
|||||||
@@ -399,8 +399,6 @@ enum BuildFlagKind {
|
|||||||
|
|
||||||
BuildFlag_Sanitize,
|
BuildFlag_Sanitize,
|
||||||
|
|
||||||
BuildFlag_FastBuild,
|
|
||||||
|
|
||||||
#if defined(GB_SYSTEM_WINDOWS)
|
#if defined(GB_SYSTEM_WINDOWS)
|
||||||
BuildFlag_IgnoreVsSearch,
|
BuildFlag_IgnoreVsSearch,
|
||||||
BuildFlag_ResourceFile,
|
BuildFlag_ResourceFile,
|
||||||
@@ -607,8 +605,6 @@ gb_internal bool parse_build_flags(Array<String> args) {
|
|||||||
|
|
||||||
add_flag(&build_flags, BuildFlag_Sanitize, str_lit("sanitize"), BuildFlagParam_String, Command__does_build, true);
|
add_flag(&build_flags, BuildFlag_Sanitize, str_lit("sanitize"), BuildFlagParam_String, Command__does_build, true);
|
||||||
|
|
||||||
add_flag(&build_flags, BuildFlag_FastBuild, str_lit("fast-build"), BuildFlagParam_None, Command__does_build);
|
|
||||||
|
|
||||||
|
|
||||||
#if defined(GB_SYSTEM_WINDOWS)
|
#if defined(GB_SYSTEM_WINDOWS)
|
||||||
add_flag(&build_flags, BuildFlag_IgnoreVsSearch, str_lit("ignore-vs-search"), BuildFlagParam_None, Command__does_build);
|
add_flag(&build_flags, BuildFlag_IgnoreVsSearch, str_lit("ignore-vs-search"), BuildFlagParam_None, Command__does_build);
|
||||||
@@ -1447,12 +1443,6 @@ gb_internal bool parse_build_flags(Array<String> args) {
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
||||||
case BuildFlag_FastBuild:
|
|
||||||
build_context.custom_optimization_level = true;
|
|
||||||
build_context.optimization_level = -1;
|
|
||||||
build_context.use_separate_modules = true;
|
|
||||||
break;
|
|
||||||
|
|
||||||
#if defined(GB_SYSTEM_WINDOWS)
|
#if defined(GB_SYSTEM_WINDOWS)
|
||||||
case BuildFlag_IgnoreVsSearch: {
|
case BuildFlag_IgnoreVsSearch: {
|
||||||
GB_ASSERT(value.kind == ExactValue_Invalid);
|
GB_ASSERT(value.kind == ExactValue_Invalid);
|
||||||
|
|||||||
Reference in New Issue
Block a user