diff --git a/file.c b/file.c index 3a7cdd5..cadb8b3 100644 --- a/file.c +++ b/file.c @@ -23,9 +23,16 @@ static DWORD _toWin32Creation(int mode) { return 0; } +bool fileExists(const char *fname) { + DWORD dwAttrib = GetFileAttributesA(fname); + + return (dwAttrib != INVALID_FILE_ATTRIBUTES && + !(dwAttrib & FILE_ATTRIBUTE_DIRECTORY)); +} + file_t fileOpen(const char *fname, int mode) { return (file_t) { - .handle = CreateFile(fname, + .handle = CreateFileA(fname, _toWin32Access(mode), 0, NULL, @@ -94,6 +101,7 @@ uint64_t fileTell(file_t *ctx) { #include #include #include +#include const char *_toStdioMode(int mode) { switch(mode) { @@ -104,6 +112,10 @@ const char *_toStdioMode(int mode) { } } +bool fileExists(const char *fname) { + return access(fname, F_OK) == 0; +} + file_t fileOpen(const char *fname, int mode) { return (file_t) { .handle = (void*) fopen(fname, _toStdioMode(mode)), @@ -118,7 +130,6 @@ void fileClose(file_t *ctx) { } bool fileIsValid(file_t *ctx) { - info("handle: %p", ctx->handle); return ctx->handle != NULL; } diff --git a/file.h b/file.h index f4502a7..8ffd885 100644 --- a/file.h +++ b/file.h @@ -23,6 +23,8 @@ typedef struct { size_t len; } fread_buf_t; +bool fileExists(const char *fname); + file_t fileOpen(const char *fname, int mode); void fileClose(file_t *ctx); diff --git a/str.c b/str.c index 86edc89..18fdd3c 100644 --- a/str.c +++ b/str.c @@ -90,6 +90,7 @@ str_t strFromWCHAR(const wchar_t *src, size_t len) { char *src_temp = (char*)src; size_t lost = iconv(cd, &src_temp, &actual_len, &dest_temp, &dest_left); assert(lost != ((size_t)-1)); + (void)lost; dest_len -= dest_left; dest = realloc(dest, dest_len + 1); @@ -133,6 +134,7 @@ wchar_t *strToWCHAR(str_t ctx) { char *src_temp = ctx.buf; size_t lost = iconv(cd, &src_temp, &ctx.len, &dest_temp, &dest_left); assert(lost != ((size_t)-1)); + (void)lost; dest_len -= dest_left; dest = realloc(dest, dest_len + 1); diff --git a/str.h b/str.h index e2db604..9ce04ee 100644 --- a/str.h +++ b/str.h @@ -2,7 +2,6 @@ #ifdef __cplusplus extern "C" { -#include #endif #include @@ -16,11 +15,6 @@ extern "C" { typedef struct str_t { char *buf; size_t len; -#ifdef __cplusplus - inline operator std::string() const { - return std::string(buf, len); - } -#endif } str_t; typedef struct { @@ -129,7 +123,6 @@ size_t strvFindFirstNotOf(strview_t ctx, strview_t view, size_t from); size_t strvFindLastNot(strview_t ctx, char c, size_t from); size_t strvFindLastNotOf(strview_t ctx, strview_t view, size_t from); - #ifdef __cplusplus } // extern "C" #endif \ No newline at end of file diff --git a/strstream.h b/strstream.h index b6ba1df..c4edb89 100644 --- a/strstream.h +++ b/strstream.h @@ -75,7 +75,7 @@ str_ostream_t ostrInitStr(const char *buf, size_t len); void ostrFree(str_ostream_t *ctx); void ostrClear(str_ostream_t *ctx); str_t ostrMove(str_ostream_t *ctx); - + char ostrBack(str_ostream_t *ctx); str_t ostrAsStr(str_ostream_t *ctx); strview_t ostrAsView(str_ostream_t *ctx); diff --git a/tracelog.c b/tracelog.c index f93a367..876cd7f 100644 --- a/tracelog.c +++ b/tracelog.c @@ -6,6 +6,7 @@ #ifdef _WIN32 #pragma warning(disable:4996) // _CRT_SECURE_NO_WARNINGS. + #include "win32_slim.h" #endif #ifdef TLOG_VS @@ -75,6 +76,10 @@ void traceLogVaList(int level, const char *fmt, va_list args) { vsnprintf(buffer + offset, sizeof(buffer) - offset, fmt, args); +#ifdef _WIN32 + SetConsoleOutputCP(CP_UTF8); +#endif + #ifdef TLOG_VS OutputDebugStringA(buffer); if(use_newline) OutputDebugStringA("\n");