- file: bool fileExists
 - str: removed c++ string conversion
 - tracelog: added utf8 output for windows
This commit is contained in:
alessandrobason 2022-03-31 02:19:14 +01:00
parent bce93361b1
commit 915fd081f3
6 changed files with 23 additions and 10 deletions

15
file.c
View file

@ -23,9 +23,16 @@ static DWORD _toWin32Creation(int mode) {
return 0; 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) { file_t fileOpen(const char *fname, int mode) {
return (file_t) { return (file_t) {
.handle = CreateFile(fname, .handle = CreateFileA(fname,
_toWin32Access(mode), _toWin32Access(mode),
0, 0,
NULL, NULL,
@ -94,6 +101,7 @@ uint64_t fileTell(file_t *ctx) {
#include <stdlib.h> #include <stdlib.h>
#include <errno.h> #include <errno.h>
#include <string.h> #include <string.h>
#include <unistd.h>
const char *_toStdioMode(int mode) { const char *_toStdioMode(int mode) {
switch(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) { file_t fileOpen(const char *fname, int mode) {
return (file_t) { return (file_t) {
.handle = (void*) fopen(fname, _toStdioMode(mode)), .handle = (void*) fopen(fname, _toStdioMode(mode)),
@ -118,7 +130,6 @@ void fileClose(file_t *ctx) {
} }
bool fileIsValid(file_t *ctx) { bool fileIsValid(file_t *ctx) {
info("handle: %p", ctx->handle);
return ctx->handle != NULL; return ctx->handle != NULL;
} }

2
file.h
View file

@ -23,6 +23,8 @@ typedef struct {
size_t len; size_t len;
} fread_buf_t; } fread_buf_t;
bool fileExists(const char *fname);
file_t fileOpen(const char *fname, int mode); file_t fileOpen(const char *fname, int mode);
void fileClose(file_t *ctx); void fileClose(file_t *ctx);

2
str.c
View file

@ -90,6 +90,7 @@ str_t strFromWCHAR(const wchar_t *src, size_t len) {
char *src_temp = (char*)src; char *src_temp = (char*)src;
size_t lost = iconv(cd, &src_temp, &actual_len, &dest_temp, &dest_left); size_t lost = iconv(cd, &src_temp, &actual_len, &dest_temp, &dest_left);
assert(lost != ((size_t)-1)); assert(lost != ((size_t)-1));
(void)lost;
dest_len -= dest_left; dest_len -= dest_left;
dest = realloc(dest, dest_len + 1); dest = realloc(dest, dest_len + 1);
@ -133,6 +134,7 @@ wchar_t *strToWCHAR(str_t ctx) {
char *src_temp = ctx.buf; char *src_temp = ctx.buf;
size_t lost = iconv(cd, &src_temp, &ctx.len, &dest_temp, &dest_left); size_t lost = iconv(cd, &src_temp, &ctx.len, &dest_temp, &dest_left);
assert(lost != ((size_t)-1)); assert(lost != ((size_t)-1));
(void)lost;
dest_len -= dest_left; dest_len -= dest_left;
dest = realloc(dest, dest_len + 1); dest = realloc(dest, dest_len + 1);

7
str.h
View file

@ -2,7 +2,6 @@
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
#include <string>
#endif #endif
#include <stdint.h> #include <stdint.h>
@ -16,11 +15,6 @@ extern "C" {
typedef struct str_t { typedef struct str_t {
char *buf; char *buf;
size_t len; size_t len;
#ifdef __cplusplus
inline operator std::string() const {
return std::string(buf, len);
}
#endif
} str_t; } str_t;
typedef struct { 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 strvFindLastNot(strview_t ctx, char c, size_t from);
size_t strvFindLastNotOf(strview_t ctx, strview_t view, size_t from); size_t strvFindLastNotOf(strview_t ctx, strview_t view, size_t from);
#ifdef __cplusplus #ifdef __cplusplus
} // extern "C" } // extern "C"
#endif #endif

View file

@ -6,6 +6,7 @@
#ifdef _WIN32 #ifdef _WIN32
#pragma warning(disable:4996) // _CRT_SECURE_NO_WARNINGS. #pragma warning(disable:4996) // _CRT_SECURE_NO_WARNINGS.
#include "win32_slim.h"
#endif #endif
#ifdef TLOG_VS #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); vsnprintf(buffer + offset, sizeof(buffer) - offset, fmt, args);
#ifdef _WIN32
SetConsoleOutputCP(CP_UTF8);
#endif
#ifdef TLOG_VS #ifdef TLOG_VS
OutputDebugStringA(buffer); OutputDebugStringA(buffer);
if(use_newline) OutputDebugStringA("\n"); if(use_newline) OutputDebugStringA("\n");