path: root/git-compat-util.h
diff options
authorJohannes Schindelin <>2017-04-26 19:29:42 (GMT)
committerJunio C Hamano <>2017-04-27 04:07:40 (GMT)
commit28f4aee3fb1a45ebcda8ff84f94d6d2d0053f887 (patch)
tree764bf7af33f9faee1dc1d7083a1d9885a6f218bd /git-compat-util.h
parent1e65a982da0e9dd4eac440e82392a8b7c72b3def (diff)
use uintmax_t for timestamps
Previously, we used `unsigned long` for timestamps. This was only a good choice on Linux, where we know implicitly that `unsigned long` is what is used for `time_t`. However, we want to use a different data type for timestamps for two reasons: - there is nothing that says that `unsigned long` should be the same data type as `time_t`, and indeed, on 64-bit Windows for example, it is not: `unsigned long` is 32-bit but `time_t` is 64-bit. - even on 32-bit Linux, where `unsigned long` (and thereby `time_t`) is 32-bit, we *want* to be able to encode timestamps in Git that are currently absurdly far in the future, *even if* the system library is not able to format those timestamps into date strings. So let's just switch to the maximal integer type available, which should be at least 64-bit for all practical purposes these days. It certainly cannot be worse than `unsigned long`, so... Signed-off-by: Johannes Schindelin <> Signed-off-by: Junio C Hamano <>
Diffstat (limited to 'git-compat-util.h')
1 files changed, 4 insertions, 4 deletions
diff --git a/git-compat-util.h b/git-compat-util.h
index 72c1217..f8349a0 100644
--- a/git-compat-util.h
+++ b/git-compat-util.h
@@ -319,10 +319,10 @@ extern char *gitdirname(char *);
#define PRIo32 "o"
-typedef unsigned long timestamp_t;
-#define PRItime "lu"
-#define parse_timestamp strtoul
+typedef uintmax_t timestamp_t;
+#define PRItime PRIuMAX
+#define parse_timestamp strtoumax
#ifndef PATH_SEP
#define PATH_SEP ':'