From ff6e3c025658a5fa1affd094f220b623e7e1b24b Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Mon, 15 Apr 2024 22:38:23 +0200 Subject: Adding upstream version 6.338.2. Signed-off-by: Daniel Baumann --- demos/utils.c | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 demos/utils.c (limited to 'demos/utils.c') diff --git a/demos/utils.c b/demos/utils.c new file mode 100644 index 0000000..7c95d00 --- /dev/null +++ b/demos/utils.c @@ -0,0 +1,49 @@ +// License: CC0 / Public Domain + +#include +#include +#include + +#include "utils.h" +#include "../src/os.h" + +#ifdef PL_HAVE_WIN32 +#include +#else +#include +#include +#include +#include +#endif + +const char *get_cache_dir(char (*buf)[512]) +{ + // Check if XDG_CACHE_HOME is set for Linux/BSD + const char* xdg_cache_home = getenv("XDG_CACHE_HOME"); + if (xdg_cache_home) + return xdg_cache_home; + +#ifdef _WIN32 + const char* local_app_data = getenv("LOCALAPPDATA"); + if (local_app_data) + return local_app_data; +#endif + +#ifdef __APPLE__ + struct passwd* pw = getpwuid(getuid()); + if (pw) { + int ret = snprintf(*buf, sizeof(*buf), "%s/%s", pw->pw_dir, "Library/Caches"); + if (ret > 0 && ret < sizeof(*buf)) + return *buf; + } +#endif + + const char* home = getenv("HOME"); + if (home) { + int ret = snprintf(*buf, sizeof(*buf), "%s/.cache", home); + if (ret > 0 && ret < sizeof(*buf)) + return *buf; + } + + return NULL; +} -- cgit v1.2.3