diff paths.c @ 2262:bc68560b4a04

Fix bug when loading cue sheet without leading path
author Michael Pavone <pavone@retrodev.com>
date Fri, 23 Dec 2022 06:23:41 -0800
parents dda7479f3bbb
children 2972a8e16ed2
line wrap: on
line diff
--- a/paths.c	Fri Dec 23 05:49:04 2022 -0800
+++ b/paths.c	Fri Dec 23 06:23:41 2022 -0800
@@ -2,6 +2,12 @@
 #include <stdlib.h>
 #include "blastem.h"
 #include "util.h"
+#ifdef _WIN32
+#include <windows.h>
+#else
+#include <unistd.h>
+#include <errno.h>
+#endif
 
 static char **current_path;
 
@@ -140,3 +146,34 @@
 		}
 	}
 }
+
+char *path_current_dir(void)
+{
+	size_t size = 128;
+	char *res = malloc(size);
+	for (;;) {
+#ifdef _WIN32
+		DWORD actual = GetCurrentDirectoryA(size, res);
+		if (actual > size) {
+			res = realloc(res, actual);
+			size = actual;
+		} else {
+			return res;
+		}
+#else
+		errno = 0;
+		char *tmp = getcwd(res, size);
+		if (!tmp) {
+			if (errno == ERANGE) {
+				size *= 2;
+				res = realloc(res, size);
+			} else {
+				free(res);
+				return NULL;
+			}
+		} else {
+			return res;
+		}
+#endif
+	}
+}