This file is part of MXE. See LICENSE.md for licensing information.

Contains ad hoc patches for cross building.

From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Christos Zoulas <christos@zoulas.com>
Date: Sat, 18 Nov 2017 22:17:57 +1100
Subject: [PATCH 1/1] PR/466: Windows fixes.

From https://github.com/file/file/commit/d5f2c28536f1645e3da25fa3f8da5a0a45404dc4.

diff --git a/src/file.h b/src/file.h
index 1111111..2222222 100644
--- a/src/file.h
+++ b/src/file.h
@@ -44,9 +44,11 @@
     #define SIZE_T_FORMAT ""
   #endif
   #define INT64_T_FORMAT "I64"
+  #define INTMAX_T_FORMAT "I64"
 #else
   #define SIZE_T_FORMAT "z"
   #define INT64_T_FORMAT "ll"
+  #define INTMAX_T_FORMAT "j"
 #endif
 
 #include <stdio.h>	/* Include that here, to make sure __P gets defined */
diff --git a/src/gmtime_r.c b/src/gmtime_r.c
index 1111111..2222222 100644
--- a/src/gmtime_r.c
+++ b/src/gmtime_r.c
@@ -9,7 +9,7 @@ FILE_RCSID("@(#)$File: gmtime_r.c,v 1.1 2015/01/09 19:28:32 christos Exp $")
 
 /* asctime_r is not thread-safe anyway */
 struct tm *
-gmtime_r(const time_t t, struct tm *tm)
+gmtime_r(const time_t *t, struct tm *tm)
 {
 	struct tm *tmp = gmtime(t);
 	if (tmp == NULL)
diff --git a/src/localtime_r.c b/src/localtime_r.c
index 1111111..2222222 100644
--- a/src/localtime_r.c
+++ b/src/localtime_r.c
@@ -9,7 +9,7 @@ FILE_RCSID("@(#)$File: localtime_r.c,v 1.1 2015/01/09 19:28:32 christos Exp $")
 
 /* asctime_r is not thread-safe anyway */
 struct tm *
-localtime_r(const time_t t, struct tm *tm)
+localtime_r(const time_t *t, struct tm *tm)
 {
 	struct tm *tmp = localtime(t);
 	if (tmp == NULL)
diff --git a/src/magic.c b/src/magic.c
index 1111111..2222222 100644
--- a/src/magic.c
+++ b/src/magic.c
@@ -137,6 +137,14 @@ _w32_get_magic_relative_to(char **hmagicpath, HINSTANCE module)
 
 	PathRemoveFileSpecA(dllpath);
 
+	if (module) {
+		char exepath[MAX_PATH];
+		GetModuleFileNameA(NULL, exepath, MAX_PATH);
+		PathRemoveFileSpecA(exepath);
+		if (stricmp(exepath, dllpath) == 0)
+			goto out;
+	}
+
 	sp = strlen(dllpath);
 	if (sp > 3 && stricmp(&dllpath[sp - 3], "bin") == 0) {
 		_w32_append_path(hmagicpath,
diff --git a/src/readelf.c b/src/readelf.c
index 1111111..2222222 100644
--- a/src/readelf.c
+++ b/src/readelf.c
@@ -1054,9 +1054,11 @@ doshn(struct magic_set *ms, int clazz, int swap, int fd, off_t off, int num,
 		case SHT_NOTE:
 			if (xsh_size + xsh_offset > (uintmax_t)fsize)  {
 				if (file_printf(ms,
-				    ", note offset/size 0x%jx+0x%jx exceeds"
-				    " file size 0x%jx", (uintmax_t)xsh_offset,
-				    (uintmax_t)xsh_size, (uintmax_t)fsize) == -1)
+				    ", note offset/size 0x%" INTMAX_T_FORMAT
+				    "x+0x%" INTMAX_T_FORMAT "x exceeds"
+				    " file size 0x%" INTMAX_T_FORMAT "x",
+				    (uintmax_t)xsh_offset, (uintmax_t)xsh_size,
+				    (uintmax_t)fsize) == -1)
 					return -1;
 				return 0; 
 			}
@@ -1065,7 +1067,8 @@ doshn(struct magic_set *ms, int clazz, int swap, int fd, off_t off, int num,
 				    " for note");
 				return -1;
 			}
-			if (pread(fd, nbuf, xsh_size, xsh_offset) < (ssize_t)xsh_size) {
+			if (pread(fd, nbuf, xsh_size, xsh_offset) <
+			    (ssize_t)xsh_size) {
 				file_badread(ms);
 				free(nbuf);
 				return -1;
