Add time bindings
diff --git a/src/unix/bsd/mod.rs b/src/unix/bsd/mod.rs
index 03fe18c..40b0ee7 100644
--- a/src/unix/bsd/mod.rs
+++ b/src/unix/bsd/mod.rs
@@ -66,6 +66,20 @@
     pub struct fd_set {
         fds_bits: [i32; FD_SETSIZE / 32],
     }
+
+    pub struct tm {
+        pub tm_sec: ::c_int,
+        pub tm_min: ::c_int,
+        pub tm_hour: ::c_int,
+        pub tm_mday: ::c_int,
+        pub tm_mon: ::c_int,
+        pub tm_year: ::c_int,
+        pub tm_wday: ::c_int,
+        pub tm_yday: ::c_int,
+        pub tm_isdst: ::c_int,
+        pub tm_gmtoff: ::c_long,
+        pub tm_zone: *mut ::c_char,
+    }
 }
 
 pub const FIOCLEX: ::c_ulong = 0x20006601;
diff --git a/src/unix/mod.rs b/src/unix/mod.rs
index fb02897..b72e791 100644
--- a/src/unix/mod.rs
+++ b/src/unix/mod.rs
@@ -446,6 +446,12 @@
                        res: *mut *mut addrinfo) -> ::c_int;
     pub fn freeaddrinfo(res: *mut addrinfo);
     pub fn gai_strerror(errcode: ::c_int) -> *const ::c_char;
+
+    pub fn gmtime_r(time_p: *const time_t, result: *mut tm) -> *mut tm;
+    pub fn localtime_r(time_p: *const time_t, result: *mut tm) -> *mut tm;
+    #[cfg_attr(all(target_os = "macos", target_arch = "x86"),
+               link_name = "mktime$UNIX2003")]
+    pub fn mktime(tm: *mut tm) -> time_t;
 }
 
 // TODO: get rid of this #[cfg(not(...))]
@@ -547,6 +553,7 @@
                   offset: ::off_t,
                   whence: ::c_int) -> ::c_int;
     pub fn ftello(stream: *mut ::FILE) -> ::off_t;
+    pub fn timegm(tm: *mut ::tm) -> time_t;
 }
 
 cfg_if! {
diff --git a/src/unix/notbsd/android/mod.rs b/src/unix/notbsd/android/mod.rs
index 37678f4..2cca05e 100644
--- a/src/unix/notbsd/android/mod.rs
+++ b/src/unix/notbsd/android/mod.rs
@@ -19,6 +19,7 @@
 pub type pthread_t = c_long;
 pub type pthread_mutexattr_t = ::c_long;
 pub type sigset_t = c_ulong;
+pub type time64_t = i64;
 
 s! {
     pub struct stat {
@@ -225,6 +226,7 @@
                        serv: *mut ::c_char,
                        sevlen: ::size_t,
                        flags: ::c_int) -> ::c_int;
+    pub fn timegm64(tm: *const ::tm) -> time64_t;
 }
 
 cfg_if! {
diff --git a/src/unix/notbsd/mod.rs b/src/unix/notbsd/mod.rs
index ed84bef..cb4d0c0 100644
--- a/src/unix/notbsd/mod.rs
+++ b/src/unix/notbsd/mod.rs
@@ -72,6 +72,20 @@
     pub struct fd_set {
         fds_bits: [::c_ulong; FD_SETSIZE / ULONG_SIZE],
     }
+
+    pub struct tm {
+        pub tm_sec: ::c_int,
+        pub tm_min: ::c_int,
+        pub tm_hour: ::c_int,
+        pub tm_mday: ::c_int,
+        pub tm_mon: ::c_int,
+        pub tm_year: ::c_int,
+        pub tm_wday: ::c_int,
+        pub tm_yday: ::c_int,
+        pub tm_isdst: ::c_int,
+        pub tm_gmtoff: ::c_long,
+        pub tm_zone: *const ::c_char,
+    }
 }
 
 // intentionally not public, only used for fd_set