blob: e99695b22d58e8b752db04a8da20e182ba64ad4f [file] [log] [blame] [raw]
#include <windows.h>
#include <nt.h>
#include <limits.h>
#include <errno.h>
char *getcwd(char *buf, unsigned int size) {
wchar_t wpath[PATH_MAX];
RtlGetCurrentDirectory_U(PATH_MAX, wpath);
size_t len = wcslen(wpath) * 2 - 1;
if(!size) {
if(buf) {
//errno = EINVAL;
return NULL;
}
buf = (char *)malloc(PATH_MAX * 2 * sizeof(char));
size = PATH_MAX * 2;
} else if(size < len) {
//errno = ERANGE;
return NULL;
}
wcstombs(buf, wpath, size);
if(len) while(--len) if(buf[len] == '\\') buf[len] = '/';
return buf;
}