From: Dimitri John Ledkov <xnox@ubuntu.com>
Date: Wed, 19 Jul 2017 10:47:28 +0200
Subject: Use stdint types to fix FTBFS with ocaml 4.04

---
 cf_common_p.h |  1 +
 cf_tai64_p.c  | 18 +++++++++---------
 cf_tai64_p.h  |  2 +-
 cf_tai64n_p.c | 42 +++++++++++++++++++++---------------------
 cf_tai64n_p.h |  2 +-
 5 files changed, 33 insertions(+), 32 deletions(-)

diff --git a/cf_common_p.h b/cf_common_p.h
index 1b486bf..4fb44b8 100644
--- a/cf_common_p.h
+++ b/cf_common_p.h
@@ -33,6 +33,7 @@
 #ifndef _CF_COMMON_P_H
 #define _CF_COMMON_P_H
 
+#include <stdint.h>
 #include <caml/alloc.h>
 #include <caml/callback.h>
 #include <caml/custom.h>
diff --git a/cf_tai64_p.c b/cf_tai64_p.c
index ac11358..07b48d5 100644
--- a/cf_tai64_p.c
+++ b/cf_tai64_p.c
@@ -200,11 +200,11 @@ CAMLprim value cf_tai64_compare(value v1, value v2)
   ---*/
 extern void cf_tai64_update(Cf_tai64_t* tai64Ptr)
 {
-    uint64 epoch;
+    uint64_t epoch;
     
     epoch = CF_TAI64_EPOCH;
     epoch += cf_tai64_current_offset;
-    tai64Ptr->s = epoch + ((uint64) time(0));
+    tai64Ptr->s = epoch + ((uint64_t) time(0));
 }
 
 /*---
@@ -290,7 +290,7 @@ CAMLprim value cf_tai64_of_unix_time(value v)
     if (x < cf_tai64_unix_limit[0] || x > cf_tai64_unix_limit[1])
         cf_tai64_range_error();
     
-    tai64.s = CF_TAI64_EPOCH + ((int64) x);
+    tai64.s = CF_TAI64_EPOCH + ((int64_t) x);
     result = cf_tai64_alloc(&tai64);
     
     CAMLreturn(result);
@@ -305,7 +305,7 @@ CAMLprim value cf_tai64_to_unix_time(value v)
     CAMLlocal1(result);
 
     double x;
-    uint64 epoch;
+    uint64_t epoch;
     
     epoch = CF_TAI64_EPOCH;
     epoch += cf_tai64_current_offset;
@@ -326,7 +326,7 @@ CAMLprim value cf_tai64_of_label(value v)
     
     Cf_tai64_t tai64;
     int i;
-    uint64 x;
+    uint64_t x;
     
     if (string_length(v) != 8) cf_tai64_label_error();
     for (i = 0, x = 0; i < 8; ++i) x = (x << 8) | Byte_u(v, i);
@@ -344,7 +344,7 @@ CAMLprim value cf_tai64_to_label(value v)
     CAMLparam1(v);
     CAMLlocal1(result);
     
-    uint64 x;
+    uint64_t x;
     int i;
     
     result = alloc_string(8);
@@ -390,7 +390,7 @@ CAMLprim value cf_tai64_add_int32(value tai64Val, value dt32Val)
 }
 
 /*---
-  Addition of int64
+  Addition of int64_t
   ---*/
 CAMLprim value cf_tai64_add_int64(value tai64Val, value dt64Val)
 {
@@ -398,7 +398,7 @@ CAMLprim value cf_tai64_add_int64(value tai64Val, value dt64Val)
     CAMLlocal1(result);
 
     Cf_tai64_t x;
-    int64 dt64;
+    int64_t dt64;
     
     dt64 = Int64_val(dt64Val);
     if (dt64 >= (CF_TAI64_EPOCH << 1)) cf_tai64_range_error();
@@ -417,7 +417,7 @@ CAMLprim value cf_tai64_sub(value v1, value v2)
 {
     CAMLparam2(v1, v2);
     
-    int64 dt;
+    int64_t dt;
     dt = Cf_tai64_val(v1)->s - Cf_tai64_val(v2)->s;
     
     CAMLreturn(copy_int64(dt));
diff --git a/cf_tai64_p.h b/cf_tai64_p.h
index b974688..e6c6cfe 100644
--- a/cf_tai64_p.h
+++ b/cf_tai64_p.h
@@ -43,7 +43,7 @@
 #define CF_TAI64_EPOCH		0x4000000000000000ULL
 #define CF_TAI64_MJD_EPOCH	0x3fffffff2efbbf8aULL
 
-struct cf_tai64_s { uint64 s; };
+struct cf_tai64_s { uint64_t s; };
 typedef struct cf_tai64_s Cf_tai64_t;
 
 #define Cf_tai64_val(v)  ((Cf_tai64_t*) Data_custom_val(v))
diff --git a/cf_tai64n_p.c b/cf_tai64n_p.c
index 91775bd..9ebe59f 100644
--- a/cf_tai64n_p.c
+++ b/cf_tai64n_p.c
@@ -88,7 +88,7 @@ static long cf_tai64n_op_hash(value v)
     
      vPtr = Cf_tai64n_val(v);
     
-    CAMLreturn((uint32) vPtr->s ^ vPtr->ns);
+    CAMLreturn((uint32_t) vPtr->s ^ vPtr->ns);
 }
 
 static void cf_tai64n_op_serialize
@@ -98,7 +98,7 @@ static void cf_tai64n_op_serialize
     
     char buffer[12];
     unsigned long long x;
-    uint32 y;
+    uint32_t y;
     int i;
     
     x = Cf_tai64n_val(v)->s;
@@ -126,7 +126,7 @@ static unsigned long cf_tai64n_op_deserialize(void* data)
 {
     char buffer[12];
     unsigned long long x;
-    uint32 y;
+    uint32_t y;
     int i;
     
     deserialize_block_1(buffer, 8);
@@ -182,7 +182,7 @@ extern value cf_tai64n_alloc(const Cf_tai64n_t* tai64nPtr)
   ---*/
 extern void cf_tai64n_update(Cf_tai64n_t* tai64nPtr)
 {
-    uint64 epoch;
+    uint64_t epoch;
     struct timeval tv;
     struct timezone tz;
     
@@ -191,7 +191,7 @@ extern void cf_tai64n_update(Cf_tai64n_t* tai64nPtr)
     
     epoch = CF_TAI64_EPOCH;
     epoch += cf_tai64_current_offset;
-    tai64nPtr->s = epoch + ((uint64) tv.tv_sec);
+    tai64nPtr->s = epoch + ((uint64_t) tv.tv_sec);
     tai64nPtr->ns = tv.tv_usec * 1000;
 }
 
@@ -238,11 +238,11 @@ CAMLprim value cf_tai64n_compose(value tai64Val, value nsVal)
     CAMLlocal1(resultVal);
     
     Cf_tai64_t* tai64Ptr;
-    uint32 ns;
+    uint32_t ns;
     Cf_tai64n_t tai64n;
     
     tai64Ptr = Cf_tai64_val(tai64Val);
-    ns = (uint32) Int_val(nsVal);
+    ns = (uint32_t) Int_val(nsVal);
     if (ns < 0 || ns > 999999999) INVALID_ARGUMENT("compose: ns > 10^9");
     
     tai64n.s = tai64Ptr->s;
@@ -287,13 +287,13 @@ CAMLprim value cf_tai64n_of_unix_time(value v)
     Cf_tai64n_t tai64n;
     double x, y;
     
-    y = (uint64) modf(Double_val(v), &x);
+    y = (uint64_t) modf(Double_val(v), &x);
     x += (double) cf_tai64_current_offset;
     if (x < cf_tai64_unix_limit[0] || x > cf_tai64_unix_limit[1])
         cf_tai64_range_error();
     
-    tai64n.s = CF_TAI64_EPOCH + ((uint64) x);
-    tai64n.ns = (uint32) (y * 1E9);
+    tai64n.s = CF_TAI64_EPOCH + ((uint64_t) x);
+    tai64n.ns = (uint32_t) (y * 1E9);
     result = cf_tai64n_alloc(&tai64n);
     
     CAMLreturn(result);
@@ -308,7 +308,7 @@ CAMLprim value cf_tai64n_to_unix_time(value v)
     CAMLlocal1(result);
 
     double x, y;
-    uint64 epoch;
+    uint64_t epoch;
     
     epoch = CF_TAI64_EPOCH;
     epoch += cf_tai64_current_offset;
@@ -331,8 +331,8 @@ CAMLprim value cf_tai64n_of_label(value v)
     
     Cf_tai64n_t tai64n;
     int i;
-    uint64 x;
-    uint32 y;
+    uint64_t x;
+    uint32_t y;
     
     if (string_length(v) != 12) cf_tai64_label_error();
     for (i = 0, x = 0; i < 8; ++i) x = (x << 8) | Byte_u(v, i);
@@ -352,8 +352,8 @@ CAMLprim value cf_tai64n_to_label(value v)
     CAMLparam1(v);
     CAMLlocal1(result);
     
-    uint64 x;
-    uint32 y;
+    uint64_t x;
+    uint32_t y;
     int i;
     
     result = alloc_string(12);
@@ -377,12 +377,12 @@ CAMLprim value cf_tai64n_add(value tai64nVal, value dtVal)
 
     Cf_tai64n_t tai64n;
     double zInt, zFrac;
-    int64 x;
-    int32 y;
+    int64_t x;
+    int32_t y;
 
     zFrac = modf(Double_val(dtVal), &zInt);
-    x = (int64) zInt;
-    y = (int32) (zFrac * 1E9);
+    x = (int64_t) zInt;
+    y = (int32_t) (zFrac * 1E9);
     
     tai64n.s = Cf_tai64n_val(tai64nVal)->s + x;
     tai64n.ns = Cf_tai64n_val(tai64nVal)->ns + y;
@@ -409,8 +409,8 @@ CAMLprim value cf_tai64n_sub(value v1, value v2)
     CAMLlocal1(resultVal);
         
     double dt;
-    dt = ((int64) Cf_tai64n_val(v1)->s) - ((int64) Cf_tai64n_val(v2)->s);
-    dt += (((int32) Cf_tai64n_val(v1)->ns) - ((int32) Cf_tai64n_val(v2)->ns))
+    dt = ((int64_t) Cf_tai64n_val(v1)->s) - ((int64_t) Cf_tai64n_val(v2)->s);
+    dt += (((int32_t) Cf_tai64n_val(v1)->ns) - ((int32_t) Cf_tai64n_val(v2)->ns))
         * 1E-9;
     
     resultVal = copy_double(dt);
diff --git a/cf_tai64n_p.h b/cf_tai64n_p.h
index 9a9edb0..ea0c99b 100644
--- a/cf_tai64n_p.h
+++ b/cf_tai64n_p.h
@@ -35,7 +35,7 @@
 
 #include "cf_tai64_p.h"
 
-struct cf_tai64n_s { uint64 s; uint32 ns; };
+struct cf_tai64n_s { uint64_t s; uint32_t ns; };
 typedef struct cf_tai64n_s Cf_tai64n_t;
 
 #define Cf_tai64n_val(v)  ((Cf_tai64n_t*) Data_custom_val(v))
