Extend User IO, OS_GetDate for linux

This commit is contained in:
Krzosa Karol
2024-01-14 17:18:58 +01:00
parent bad74c2dcd
commit 2eb1bbdfd9
6 changed files with 37 additions and 13 deletions

View File

@@ -33,7 +33,7 @@ int main(int argument_count, char **arguments) {
}
if (build_file.str == 0) {
IO_Printf("IDLE Nothing to do, couldnt find build file in current dir: %.*s, exiting ... \n", S8_Expand(working_dir));
IO_Printf("Couldnt find build file in current dir: %.*s, exiting ... \n", S8_Expand(working_dir));
return 0;
}
}
@@ -69,7 +69,7 @@ int main(int argument_count, char **arguments) {
if (build_file.str) {
int result = OS_SystemF(IF_WINDOWS_ELSE("", "./") "%.*s %.*s", S8_Expand(exe_name), S8_Expand(cmdline_args));
if (result != 0) {
printf("FAILED execution of the build file!\n");
IO_Printf("FAILED execution of the build file!\n");
return 1;
}
}

View File

@@ -375,7 +375,7 @@ OS_API OS_Date OS_GetDate(void) {
result.day = local.wDay;
result.hour = local.wHour;
result.second = local.wSecond;
result.milliseconds = local.wMilliseconds;
// result.milliseconds = local.wMilliseconds;
return result;
}
@@ -557,7 +557,17 @@ OS_API int64_t OS_GetFileModTime(S8_String file) {
}
OS_API OS_Date OS_GetDate(void) {
time_t t = time(NULL);
struct tm date = *localtime(&t);
OS_Date s = {0};
s.second = date.tm_sec;
s.year = date.tm_year;
s.month = date.tm_mon;
s.day = date.tm_mday;
s.hour = date.tm_hour;
s.minute = date.tm_min;
return s;
}

View File

@@ -25,7 +25,6 @@ struct OS_Date {
uint32_t hour;
uint32_t minute;
uint32_t second;
uint32_t milliseconds;
};
typedef struct OS_FileIter OS_FileIter;

View File

@@ -31,7 +31,7 @@ IO_StaticFunc int IO_Strlen(char *string) {
return len;
}
void (*IO_User_OutputMessage)(char *str, int len);
void (*IO_User_OutputMessage)(int kind, char *file, int line, char *str, int len);
IO_API bool IO__FatalErrorf(const char *file, int line, const char *msg, ...) {
va_list args1;
@@ -83,7 +83,7 @@ IO_API bool IO__FatalErrorf(const char *file, int line, const char *msg, ...) {
return ret == IO_ErrorResult_Break;
}
IO_API void IO_Printf(const char *msg, ...) {
IO_API void IO__Printf(int kind, char *file, int line, const char *msg, ...) {
// First try to use a static buffer. That can fail because the message
// can be bigger then the buffer. Allocate enough memory to fit in that
// case.
@@ -107,7 +107,7 @@ IO_API void IO_Printf(const char *msg, ...) {
va_end(args1);
if (IO_User_OutputMessage) {
IO_User_OutputMessage(result, size);
IO_User_OutputMessage(kind, file, line, result, size);
}
else {
IO_OutputMessage(result, size);
@@ -127,10 +127,9 @@ IO_API bool IO__FatalError(char *msg) {
return result == IO_ErrorResult_Break;
}
IO_API void IO_Print(char *msg) {
int len = IO_Strlen(msg);
IO_API void IO_Print(int kind, char *file, int line, char *msg, int len) {
if (IO_User_OutputMessage) {
IO_User_OutputMessage(msg, len);
IO_User_OutputMessage(kind, file, line, msg, len);
}
else {
IO_OutputMessage(msg, len);

View File

@@ -31,7 +31,7 @@ typedef enum IO_ErrorResult {
#define IO__PrintfFormat(fmt, va)
#endif
extern void (*IO_User_OutputMessage)(char *str, int len);
extern void (*IO_User_OutputMessage)(int kind, char *file, int line, char *str, int len);
#define IO__STRINGIFY(x) #x
#define IO__TOSTRING(x) IO__STRINGIFY(x)
@@ -74,10 +74,16 @@ extern void (*IO_User_OutputMessage)(char *str, int len);
#define IO_Todo() IO_FatalError("This codepath is not implemented yet")
IO_API bool IO__FatalErrorf(const char *file, int line, const char *msg, ...) IO__PrintfFormat(3, 4);
IO_API void IO_Printf(const char *msg, ...) IO__PrintfFormat(1, 2);
IO_API void IO__Printf(int kind, char *file, int line, const char *msg, ...) IO__PrintfFormat(4, 5);
IO_API bool IO__FatalError(char *msg);
IO_API void IO_Print(char *msg);
IO_API void IO_Print(int kind, char *file, int line, char *msg, int len);
IO_API void IO_OutputMessage(char *str, int len);
IO_API IO_ErrorResult IO_OutputError(char *str, int len);
IO_API void IO_Exit(int error_code);
IO_API bool IO_IsDebuggerPresent(void);
const int IO_KindPrintf = 1;
const int IO_KindWarningf = 2;
#define IO_Printf(...) IO__Printf(IO_KindPrintf, __FILE__, __LINE__, __VA_ARGS__)
#define IO_Warningf(...) IO__Printf(IO_KindWarningf, __FILE__, __LINE__, __VA_ARGS__)

View File

@@ -102,6 +102,16 @@
#define IF_LINUX_ELSE(x, y) y
#endif
#if OS_WINDOWS
#define OS_NAME "Windows"
#elif OS_LINUX
#define OS_NAME "Linux"
#elif OS_MAC
#define OS_NAME "MacOS"
#else
#error couldn't figure out OS
#endif
// #if COMPILER_CLANG
// #pragma clang diagnostic push
// #pragma clang diagnostic ignored "-Wmicrosoft-enum-forward-reference"