mirror of
https://github.com/ClassiCube/ClassiCube.git
synced 2025-09-12 00:56:40 -04:00
Eliminate Directory_Exists API
This commit is contained in:
parent
d496d87de6
commit
1eefe36cfe
@ -122,10 +122,8 @@ static cc_bool CreateLogsDirectory(void) {
|
|||||||
/* --> Utils_EnsureDirectory --> Logger_SysWarn2 --> Chat_Add --> AppendChatLog -> OpenChatLog */
|
/* --> Utils_EnsureDirectory --> Logger_SysWarn2 --> Chat_Add --> AppendChatLog -> OpenChatLog */
|
||||||
/* --> Utils_EnsureDirectory --> Logger_SysWarn2 --> Chat_Add --> AppendChatLog ... */
|
/* --> Utils_EnsureDirectory --> Logger_SysWarn2 --> Chat_Add --> AppendChatLog ... */
|
||||||
/* and so on, until eventually the stack overflows */
|
/* and so on, until eventually the stack overflows */
|
||||||
if (Directory_Exists(&dir)) return true;
|
|
||||||
|
|
||||||
res = Directory_Create(&dir);
|
res = Directory_Create(&dir);
|
||||||
if (!res) return true;
|
if (!res || res == ReturnCode_DirectoryExists) return true;
|
||||||
|
|
||||||
Chat_DisableLogging();
|
Chat_DisableLogging();
|
||||||
Logger_SysWarn2(res, "creating directory", &dir);
|
Logger_SysWarn2(res, "creating directory", &dir);
|
||||||
|
@ -76,10 +76,6 @@ static CC_NOINLINE void InitFramebuffer(void) {
|
|||||||
Window_AllocFramebuffer(&Launcher_Framebuffer);
|
Window_AllocFramebuffer(&Launcher_Framebuffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
static cc_bool UsingBitmappedFont(void) {
|
|
||||||
return (useBitmappedFont || Launcher_ClassicBackground) && hasBitmappedFont;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*########################################################################################################################*
|
/*########################################################################################################################*
|
||||||
*--------------------------------------------------------Starter/Updater--------------------------------------------------*
|
*--------------------------------------------------------Starter/Updater--------------------------------------------------*
|
||||||
@ -504,7 +500,7 @@ void Launcher_TryLoadTexturePack(void) {
|
|||||||
|
|
||||||
void Launcher_UpdateLogoFont(void) {
|
void Launcher_UpdateLogoFont(void) {
|
||||||
Font_Free(&logoFont);
|
Font_Free(&logoFont);
|
||||||
Drawer2D_BitmappedText = UsingBitmappedFont();
|
Drawer2D_BitmappedText = (useBitmappedFont || Launcher_ClassicBackground) && hasBitmappedFont;
|
||||||
Drawer2D_MakeFont(&logoFont, 32, FONT_FLAGS_NONE);
|
Drawer2D_MakeFont(&logoFont, 32, FONT_FLAGS_NONE);
|
||||||
Drawer2D_BitmappedText = false;
|
Drawer2D_BitmappedText = false;
|
||||||
}
|
}
|
||||||
@ -554,7 +550,6 @@ void Launcher_ResetPixels(void) {
|
|||||||
Launcher_ResetArea(0, 0, WindowInfo.Width, WindowInfo.Height);
|
Launcher_ResetArea(0, 0, WindowInfo.Width, WindowInfo.Height);
|
||||||
}
|
}
|
||||||
|
|
||||||
Drawer2D_BitmappedText = UsingBitmappedFont();
|
|
||||||
DrawTextArgs_Make(&args, &title_fore, &logoFont, false);
|
DrawTextArgs_Make(&args, &title_fore, &logoFont, false);
|
||||||
x = WindowInfo.Width / 2 - Drawer2D_TextWidth(&args) / 2;
|
x = WindowInfo.Width / 2 - Drawer2D_TextWidth(&args) / 2;
|
||||||
|
|
||||||
@ -562,8 +557,6 @@ void Launcher_ResetPixels(void) {
|
|||||||
Drawer2D_DrawText(&Launcher_Framebuffer, &args, x + titleX, titleY);
|
Drawer2D_DrawText(&Launcher_Framebuffer, &args, x + titleX, titleY);
|
||||||
args.text = title_fore;
|
args.text = title_fore;
|
||||||
Drawer2D_DrawText(&Launcher_Framebuffer, &args, x, 0);
|
Drawer2D_DrawText(&Launcher_Framebuffer, &args, x, 0);
|
||||||
|
|
||||||
Drawer2D_BitmappedText = false;
|
|
||||||
Launcher_MarkAllDirty();
|
Launcher_MarkAllDirty();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -31,6 +31,7 @@ const cc_result ReturnCode_FileShareViolation = ERROR_SHARING_VIOLATION;
|
|||||||
const cc_result ReturnCode_FileNotFound = ERROR_FILE_NOT_FOUND;
|
const cc_result ReturnCode_FileNotFound = ERROR_FILE_NOT_FOUND;
|
||||||
const cc_result ReturnCode_SocketInProgess = WSAEINPROGRESS;
|
const cc_result ReturnCode_SocketInProgess = WSAEINPROGRESS;
|
||||||
const cc_result ReturnCode_SocketWouldBlock = WSAEWOULDBLOCK;
|
const cc_result ReturnCode_SocketWouldBlock = WSAEWOULDBLOCK;
|
||||||
|
const cc_result ReturnCode_DirectoryExists = ERROR_ALREADY_EXISTS;
|
||||||
#elif defined CC_BUILD_POSIX
|
#elif defined CC_BUILD_POSIX
|
||||||
/* POSIX can be shared between Linux/BSD/macOS */
|
/* POSIX can be shared between Linux/BSD/macOS */
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
@ -58,6 +59,7 @@ const cc_result ReturnCode_FileShareViolation = 1000000000; /* TODO: not used ap
|
|||||||
const cc_result ReturnCode_FileNotFound = ENOENT;
|
const cc_result ReturnCode_FileNotFound = ENOENT;
|
||||||
const cc_result ReturnCode_SocketInProgess = EINPROGRESS;
|
const cc_result ReturnCode_SocketInProgess = EINPROGRESS;
|
||||||
const cc_result ReturnCode_SocketWouldBlock = EWOULDBLOCK;
|
const cc_result ReturnCode_SocketWouldBlock = EWOULDBLOCK;
|
||||||
|
const cc_result ReturnCode_DirectoryExists = EEXIST;
|
||||||
#endif
|
#endif
|
||||||
/* Platform specific include files (Try to share for UNIX-ish) */
|
/* Platform specific include files (Try to share for UNIX-ish) */
|
||||||
#if defined CC_BUILD_DARWIN
|
#if defined CC_BUILD_DARWIN
|
||||||
@ -334,15 +336,6 @@ cc_uint64 Stopwatch_Measure(void) {
|
|||||||
*-----------------------------------------------------Directory/File------------------------------------------------------*
|
*-----------------------------------------------------Directory/File------------------------------------------------------*
|
||||||
*#########################################################################################################################*/
|
*#########################################################################################################################*/
|
||||||
#if defined CC_BUILD_WIN
|
#if defined CC_BUILD_WIN
|
||||||
int Directory_Exists(const cc_string* path) {
|
|
||||||
WCHAR str[NATIVE_STR_LEN];
|
|
||||||
DWORD attribs;
|
|
||||||
|
|
||||||
Platform_EncodeUtf16(str, path);
|
|
||||||
attribs = GetFileAttributesW(str);
|
|
||||||
return attribs != INVALID_FILE_ATTRIBUTES && (attribs & FILE_ATTRIBUTE_DIRECTORY);
|
|
||||||
}
|
|
||||||
|
|
||||||
cc_result Directory_Create(const cc_string* path) {
|
cc_result Directory_Create(const cc_string* path) {
|
||||||
WCHAR str[NATIVE_STR_LEN];
|
WCHAR str[NATIVE_STR_LEN];
|
||||||
BOOL success;
|
BOOL success;
|
||||||
@ -460,13 +453,6 @@ cc_result File_Length(cc_file file, cc_uint32* len) {
|
|||||||
return *len != INVALID_FILE_SIZE ? 0 : GetLastError();
|
return *len != INVALID_FILE_SIZE ? 0 : GetLastError();
|
||||||
}
|
}
|
||||||
#elif defined CC_BUILD_POSIX
|
#elif defined CC_BUILD_POSIX
|
||||||
int Directory_Exists(const cc_string* path) {
|
|
||||||
char str[NATIVE_STR_LEN];
|
|
||||||
struct stat sb;
|
|
||||||
Platform_EncodeUtf8(str, path);
|
|
||||||
return stat(str, &sb) == 0 && S_ISDIR(sb.st_mode);
|
|
||||||
}
|
|
||||||
|
|
||||||
cc_result Directory_Create(const cc_string* path) {
|
cc_result Directory_Create(const cc_string* path) {
|
||||||
char str[NATIVE_STR_LEN];
|
char str[NATIVE_STR_LEN];
|
||||||
Platform_EncodeUtf8(str, path);
|
Platform_EncodeUtf8(str, path);
|
||||||
|
@ -29,6 +29,7 @@ extern const cc_result ReturnCode_FileShareViolation;
|
|||||||
extern const cc_result ReturnCode_FileNotFound;
|
extern const cc_result ReturnCode_FileNotFound;
|
||||||
extern const cc_result ReturnCode_SocketInProgess;
|
extern const cc_result ReturnCode_SocketInProgess;
|
||||||
extern const cc_result ReturnCode_SocketWouldBlock;
|
extern const cc_result ReturnCode_SocketWouldBlock;
|
||||||
|
extern const cc_result ReturnCode_DirectoryExists;
|
||||||
|
|
||||||
#ifdef CC_BUILD_WIN
|
#ifdef CC_BUILD_WIN
|
||||||
/* Encodes a string in UTF16 format, also null terminating the string. */
|
/* Encodes a string in UTF16 format, also null terminating the string. */
|
||||||
@ -151,8 +152,6 @@ CC_API cc_uint64 Stopwatch_ElapsedMicroseconds(cc_uint64 beg, cc_uint64 end);
|
|||||||
/* Returns total elapsed milliseconds between two stopwatch measurements. */
|
/* Returns total elapsed milliseconds between two stopwatch measurements. */
|
||||||
int Stopwatch_ElapsedMS(cc_uint64 beg, cc_uint64 end);
|
int Stopwatch_ElapsedMS(cc_uint64 beg, cc_uint64 end);
|
||||||
|
|
||||||
/* Returns non-zero if the given directory exists. */
|
|
||||||
CC_API int Directory_Exists(const cc_string* path);
|
|
||||||
/* Attempts to create a new directory. */
|
/* Attempts to create a new directory. */
|
||||||
CC_API cc_result Directory_Create(const cc_string* path);
|
CC_API cc_result Directory_Create(const cc_string* path);
|
||||||
/* Callback function invoked for each file found. */
|
/* Callback function invoked for each file found. */
|
||||||
|
@ -25,12 +25,11 @@ cc_bool Utils_IsUrlPrefix(const cc_string* value) {
|
|||||||
|
|
||||||
cc_bool Utils_EnsureDirectory(const char* dirName) {
|
cc_bool Utils_EnsureDirectory(const char* dirName) {
|
||||||
cc_string dir = String_FromReadonly(dirName);
|
cc_string dir = String_FromReadonly(dirName);
|
||||||
cc_result res;
|
cc_result res = Directory_Create(&dir);
|
||||||
if (Directory_Exists(&dir)) return true;
|
|
||||||
|
|
||||||
res = Directory_Create(&dir);
|
if (!res || res == ReturnCode_DirectoryExists) return true;
|
||||||
if (res) { Logger_SysWarn2(res, "creating directory", &dir); }
|
Logger_SysWarn2(res, "creating directory", &dir);
|
||||||
return res == 0;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Utils_UNSAFE_GetFilename(STRING_REF cc_string* path) {
|
void Utils_UNSAFE_GetFilename(STRING_REF cc_string* path) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user