bloodrun-editor/q3map2/shims/glib.h
2026-04-02 20:51:01 +08:00

55 lines
1.3 KiB
C
Executable file

/*
* Minimal glib.h shim for q3map2 on Windows.
* Provides the small subset of glib used by inout.cpp and vfs.cpp:
* - g_locale_to_utf8 / g_free (UTF-8 conversion)
* - GDir / g_dir_open / g_dir_read_name / g_dir_close (directory traversal)
*/
#pragma once
#include <stdlib.h>
#include <string.h>
#ifdef __cplusplus
extern "C" {
#endif
/* ---- types ---- */
typedef char gchar;
typedef int gboolean;
#ifndef TRUE
#define TRUE 1
#endif
#ifndef FALSE
#define FALSE 0
#endif
/* ---- UTF-8 conversion ---- */
/* q3map2 messages are ASCII; just duplicate the string. */
static __inline gchar* g_locale_to_utf8(const char* str, int len,
void* bytes_read, void* bytes_written,
void* error)
{
(void)bytes_read; (void)bytes_written; (void)error;
if (len < 0)
return _strdup(str);
else {
char* r = (char*)malloc((size_t)len + 1);
if (r) { memcpy(r, str, (size_t)len); r[len] = '\0'; }
return r;
}
}
static __inline void g_free(void* p) { free(p); }
/* ---- directory traversal ---- */
typedef struct _GDir GDir;
GDir* g_dir_open(const char* path, unsigned int flags, void* error);
const char* g_dir_read_name(GDir* dir);
void g_dir_close(GDir* dir);
#ifdef __cplusplus
}
#endif