You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
mxe/src/file-1-fixes.patch

102 lines
3.2 KiB

This file is part of MXE. See LICENSE.md for licensing information.
10 years ago
Contains ad hoc patches for cross building.
10 years ago
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.
10 years ago
From https://github.com/file/file/commit/d5f2c28536f1645e3da25fa3f8da5a0a45404dc4.
10 years ago
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 */
9 years ago
diff --git a/src/gmtime_r.c b/src/gmtime_r.c
index 1111111..2222222 100644
9 years ago
--- 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 $")
10 years ago
9 years ago
/* 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
9 years ago
--- 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 $")
10 years ago
9 years ago
/* 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;