wchar_t wstr[wchars_num];
MultiByteToWideChar(CP_UTF8, 0, fname, -1, wstr, wchars_num);
- if ((file = _wfopen(wstr, L"r")) == NULL) {
+ if ((file = _wfopen(wstr, L"rb")) == NULL) {
#else
if ((file = fopen(fname, "r")) == NULL ) {
#include <unistd.h>
+// Windows deprecated mkdir()
+// Fix per internet searches and modified by @f8ttyc8t (<https://github.com/f8ttyc8t>)
+#if (defined(_WIN32) || defined(__WIN32__))
+ // Let compiler know where to find _mkdir()
+ #include <direct.h>
+ #define mkdir(A, B) _mkdir(A)
+#endif
+
+
// Create new zip archive
void zip_new_archive(mz_zip_archive * pZip) {
memset(pZip, 0, sizeof(mz_zip_archive));
}
+// Windows does not know realpath(), so we need a "windows port"
+// Fix by @f8ttyc8t (<https://github.com/f8ttyc8t>)
+#if (defined(_WIN32) || defined(__WIN32__))
+// Let compiler know where to find GetFullPathName()
+#include <windows.h>
+
+char *realpath(const char *path, char *resolved_path) {
+ DWORD retval = 0;
+ DWORD dwBufSize = 0; // Just in case MAX_PATH differs from PATH_MAX
+ TCHAR *buffer = NULL;
+
+ if (resolved_path == NULL) {
+ // realpath allocates appropiate bytes if resolved_path is null. This is to mimic realpath behavior
+ dwBufSize = PATH_MAX; // Use windows PATH_MAX constant, because we are in Windows context now.
+ buffer = (char*)malloc(dwBufSize);
+
+ if (buffer == NULL) {
+ return NULL; // some really weird is going on...
+ }
+ } else {
+ dwBufSize = MAX_PATH; // buffer has been allocated using MAX_PATH earlier
+ buffer = resolved_path;
+ }
+
+ retval = GetFullPathName(path, dwBufSize, buffer, NULL);
+
+ if (retval == 0) {
+ return NULL;
+ printf("Failed to GetFullPathName()\n");
+ }
+
+ return buffer;
+}
+#endif
+
+
int main(int argc, char** argv) {
int exitcode = EXIT_SUCCESS;
char * binname = "multimarkdown";