From 91386eee2613cbaf736d746cfef28674cce82c01 Mon Sep 17 00:00:00 2001
From: Paul Sokolovsky <pfalcon@users.sourceforge.net>
Date: Mon, 17 Nov 2014 00:16:14 +0200
Subject: [PATCH] ports: Define mp_off_t.

---
 bare-arm/mpconfigport.h | 1 +
 qemu-arm/mpconfigport.h | 1 +
 teensy/mpconfigport.h   | 1 +
 unix-cpy/mpconfigport.h | 1 +
 windows/mpconfigport.h  | 7 +++++++
 5 files changed, 11 insertions(+)

diff --git a/bare-arm/mpconfigport.h b/bare-arm/mpconfigport.h
index 59f246e2b..0015541f9 100644
--- a/bare-arm/mpconfigport.h
+++ b/bare-arm/mpconfigport.h
@@ -46,6 +46,7 @@ typedef int32_t mp_int_t; // must be pointer size
 typedef uint32_t mp_uint_t; // must be pointer size
 typedef void *machine_ptr_t; // must be of pointer size
 typedef const void *machine_const_ptr_t; // must be of pointer size
+typedef long mp_off_t;
 
 // extra built in names to add to the global namespace
 extern const struct _mp_obj_fun_builtin_t mp_builtin_open_obj;
diff --git a/qemu-arm/mpconfigport.h b/qemu-arm/mpconfigport.h
index e3c0969a5..45c773741 100644
--- a/qemu-arm/mpconfigport.h
+++ b/qemu-arm/mpconfigport.h
@@ -29,6 +29,7 @@ typedef int32_t mp_int_t; // must be pointer size
 typedef uint32_t mp_uint_t; // must be pointer size
 typedef void *machine_ptr_t; // must be of pointer size
 typedef const void *machine_const_ptr_t; // must be of pointer size
+typedef long mp_off_t;
 
 // extra built in names to add to the global namespace
 extern const struct _mp_obj_fun_builtin_t mp_builtin_open_obj;
diff --git a/teensy/mpconfigport.h b/teensy/mpconfigport.h
index 8e2ba4afd..efe51fecd 100644
--- a/teensy/mpconfigport.h
+++ b/teensy/mpconfigport.h
@@ -55,6 +55,7 @@ typedef int32_t mp_int_t; // must be pointer size
 typedef unsigned int mp_uint_t; // must be pointer size
 typedef void *machine_ptr_t; // must be of pointer size
 typedef const void *machine_const_ptr_t; // must be of pointer size
+typedef long mp_off_t;
 
 // We have inlined IRQ functions for efficiency (they are generally
 // 1 machine instruction).
diff --git a/unix-cpy/mpconfigport.h b/unix-cpy/mpconfigport.h
index 4d1deb879..2c1d5d7b2 100644
--- a/unix-cpy/mpconfigport.h
+++ b/unix-cpy/mpconfigport.h
@@ -48,6 +48,7 @@ typedef unsigned int mp_uint_t; // must be pointer size
 typedef void *machine_ptr_t; // must be of pointer size
 typedef const void *machine_const_ptr_t; // must be of pointer size
 typedef double machine_float_t;
+typedef long mp_off_t;
 
 // We need to provide a declaration/definition of alloca()
 #ifdef __FreeBSD__
diff --git a/windows/mpconfigport.h b/windows/mpconfigport.h
index ee207c1ef..7b23f5cb1 100644
--- a/windows/mpconfigport.h
+++ b/windows/mpconfigport.h
@@ -92,6 +92,13 @@ typedef unsigned int mp_uint_t; // must be pointer size
 // define standard endianness macros.
 #define MP_ENDIANNESS_LITTLE (1)
 
+// Cannot include <sys/types.h>, as it may lead to symbol name clashes
+#if _FILE_OFFSET_BITS == 64 && !defined(__LP64__)
+typedef long long mp_off_t;
+#else
+typedef long mp_off_t;
+#endif
+
 typedef void *machine_ptr_t; // must be of pointer size
 typedef const void *machine_const_ptr_t; // must be of pointer size
 
-- 
GitLab