Mercurial > repos > blastem
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 + } +}