diff options
Diffstat (limited to 'src/platform')
-rw-r--r-- | src/platform/file.c | 93 | ||||
-rw-r--r-- | src/platform/file.h | 26 | ||||
-rw-r--r-- | src/platform/platform.h | 37 | ||||
-rw-r--r-- | src/platform/platform_unix.c | 16 | ||||
-rw-r--r-- | src/platform/platform_windows.c | 22 |
5 files changed, 0 insertions, 194 deletions
diff --git a/src/platform/file.c b/src/platform/file.c deleted file mode 100644 index 91daa4f..0000000 --- a/src/platform/file.c +++ /dev/null @@ -1,93 +0,0 @@ -#include "file.h" - -#include <errno.h> -#include <stdbool.h> -#include <stddef.h> -#include <stdio.h> -#include <stdlib.h> - -#include "log.h" -#include "mem.h" -#include "str.h" - -const char* string_from_file(const char* path) { - FILE* f = fopen(path, "rb"); - if (f == NULL) { - ERROR("Error reading file: %s. errno: %d", path, errno); - return NULL; - } - if (ferror(f)) { - ERROR("Error reading file: %s. errno: %d", path, errno); - return NULL; - } - fseek(f, 0, SEEK_END); - long fsize = ftell(f); - rewind(f); - - char* string = malloc(fsize + 1); - fread(string, fsize, 1, f); - fclose(f); - - string[fsize] = '\0'; - - return string; -} - -str8_opt str8_from_file(arena* a, Str8 path) { - char* p = cstr(a, path); - str8_opt result = { .has_value = false }; - - FILE* f = fopen(p, "rb"); - if (f == NULL) { - ERROR("Error reading file: %s. errno: %d", path, errno); - return result; - } - if (ferror(f)) { - ERROR("Error reading file: %s. errno: %d", path, errno); - return result; - } - fseek(f, 0, SEEK_END); - long fsize = ftell(f); - rewind(f); - - u8* raw = arena_alloc(a, fsize + 1); - Str8 contents = Str8_create(raw, fsize); - contents.buf[contents.len] = '\0'; - - fread(raw, fsize, 1, f); - fclose(f); - result.contents = contents; - result.has_value = true; - - return result; -} - -FileData load_spv_file(const char* path) { - FILE* f = fopen(path, "rb"); - if (f == NULL) { - perror("Error opening file"); - return (FileData){ NULL, 0 }; - } - - fseek(f, 0, SEEK_END); - long fsize = ftell(f); - rewind(f); - - char* data = (char*)malloc(fsize); - if (data == NULL) { - perror("Memory allocation failed"); - fclose(f); - return (FileData){ NULL, 0 }; - } - - size_t bytesRead = fread(data, 1, fsize, f); - if (bytesRead < fsize) { - perror("Failed to read the entire file"); - free(data); - fclose(f); - return (FileData){ NULL, 0 }; - } - - fclose(f); - return (FileData){ data, bytesRead }; -} diff --git a/src/platform/file.h b/src/platform/file.h deleted file mode 100644 index 5e5e1e1..0000000 --- a/src/platform/file.h +++ /dev/null @@ -1,26 +0,0 @@ -/** - * @file file.h - * @brief File I/O utilities - * @date 2024-02-24 - * @copyright Copyright (c) 2024 - */ -#pragma once - -#include "defines.h" -#include "str.h" - -typedef struct str8_opt { - Str8 contents; - bool has_value; -} str8_opt; - -const char* string_from_file(const char* path); - -str8_opt str8_from_file(arena* a, Str8 path); - -typedef struct { - char* data; - size_t size; -} FileData; - -FileData load_spv_file(const char* path); diff --git a/src/platform/platform.h b/src/platform/platform.h deleted file mode 100644 index c2be630..0000000 --- a/src/platform/platform.h +++ /dev/null @@ -1,37 +0,0 @@ -#pragma once - -#include "defines.h" -#include "str.h" - -// -- Paths -typedef struct path_opt { - Str8 path; - bool has_value; -} path_opt; - -// TODO: convert to using str8 -// TODO: use uppercase code style -path_opt path_parent(arena* a, const char* path); - -// --- Threads -typedef struct CelThread CelThread; - -CelThread Thread_Create(); -void Thread_Destroy(CelThread* thread); - -// --- Mutexes -typedef struct CelMutex CelMutex; - -CelMutex Mutex_Create(); -void Mutex_Destroy(CelMutex* mutex); - -/** @brief Blocks until the mutex can be acquired. if returns false then an error occurred and can - * be checked (TODO) */ -bool Mutex_Lock(CelMutex* mutex); - -/** @brief Tries to acquire the mutex like `mutex_lock` but returns immediately if the mutex has - * already been locked */ -bool Mutex_TryLock(CelMutex* mutex); - -/** @brief Releases a mutex. If it is already unlocked then does nothing */ -void Mutex_Unlock(CelMutex* mutex); diff --git a/src/platform/platform_unix.c b/src/platform/platform_unix.c deleted file mode 100644 index 86ac170..0000000 --- a/src/platform/platform_unix.c +++ /dev/null @@ -1,16 +0,0 @@ -#include "platform.h" - -#if defined(CEL_PLATFORM_LINUX) || defined(CEL_PLATFORM_MAC) - -#include <libgen.h> -#include <string.h> - -path_opt path_parent(arena* a, const char* path) { - // Duplicate the string because dirname doesnt like const literals - char* path_copy = arena_alloc(a, strlen(path) + 1); - strcpy(path_copy, path); - char* path_dirname = dirname(path_copy); - return (path_opt){ .path = Str8_cstr_view(path_dirname), .has_value = true }; -} - -#endif diff --git a/src/platform/platform_windows.c b/src/platform/platform_windows.c deleted file mode 100644 index 21ef359..0000000 --- a/src/platform/platform_windows.c +++ /dev/null @@ -1,22 +0,0 @@ -#include "platform.h" - -#if defined(CEL_PLATFORM_WINDOWS) - -#include <shlwapi.h> -#include <windows.h> -#pragma comment(lib, "Shlwapi.lib") - -path_opt path_parent(arena* a, const char* path) { - // Duplicate the string because PathRemoveFileSpec mutates in-place - size_t len = strlen(path) + 1; - char* path_copy = arena_alloc(a, len); - strcpy_s(path_copy, len, path); - - if (PathRemoveFileSpecA(path_copy)) { - return (path_opt){ .path = Str8_cstr_view(path_copy), .has_value = true }; - } else { - return (path_opt){ .has_value = false }; - } -} - -#endif |