summaryrefslogtreecommitdiff
path: root/t
diff options
context:
space:
mode:
authorJohannes Schindelin <johannes.schindelin@gmx.de>2017-04-26 19:29:31 (GMT)
committerJunio C Hamano <gitster@pobox.com>2017-04-27 04:07:39 (GMT)
commitdddbad728c93280fe54ef86699b6d70e2aab44d1 (patch)
treec2a48100bf8597f0771e6737fda19e7255c737dc /t
parentcb71f8bdb5a105cd5b66142b887989d9addc82d0 (diff)
downloadgit-dddbad728c93280fe54ef86699b6d70e2aab44d1.zip
git-dddbad728c93280fe54ef86699b6d70e2aab44d1.tar.gz
git-dddbad728c93280fe54ef86699b6d70e2aab44d1.tar.bz2
timestamp_t: a new data type for timestamps
Git's source code assumes that unsigned long is at least as precise as time_t. Which is incorrect, and causes a lot of problems, in particular where unsigned long is only 32-bit (notably on Windows, even in 64-bit versions). So let's just use a more appropriate data type instead. In preparation for this, we introduce the new `timestamp_t` data type. By necessity, this is a very, very large patch, as it has to replace all timestamps' data type in one go. As we will use a data type that is not necessarily identical to `time_t`, we need to be very careful to use `time_t` whenever we interact with the system functions, and `timestamp_t` everywhere else. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 't')
-rw-r--r--t/helper/test-date.c8
-rw-r--r--t/helper/test-parse-options.c2
-rw-r--r--t/helper/test-ref-store.c2
3 files changed, 6 insertions, 6 deletions
diff --git a/t/helper/test-date.c b/t/helper/test-date.c
index 269040f..f414a3a 100644
--- a/t/helper/test-date.c
+++ b/t/helper/test-date.c
@@ -27,7 +27,7 @@ static void show_dates(const char **argv, const char *format)
parse_date_format(format, &mode);
for (; *argv; argv++) {
char *arg;
- time_t t;
+ timestamp_t t;
int tz;
/*
@@ -48,7 +48,7 @@ static void parse_dates(const char **argv, struct timeval *now)
struct strbuf result = STRBUF_INIT;
for (; *argv; argv++) {
- unsigned long t;
+ timestamp_t t;
int tz;
strbuf_reset(&result);
@@ -65,7 +65,7 @@ static void parse_dates(const char **argv, struct timeval *now)
static void parse_approxidate(const char **argv, struct timeval *now)
{
for (; *argv; argv++) {
- time_t t;
+ timestamp_t t;
t = approxidate_relative(*argv, now);
printf("%s -> %s\n", *argv, show_date(t, 0, DATE_MODE(ISO8601)));
}
@@ -96,7 +96,7 @@ int cmd_main(int argc, const char **argv)
else if (!strcmp(*argv, "approxidate"))
parse_approxidate(argv+1, &now);
else if (!strcmp(*argv, "is64bit"))
- return sizeof(unsigned long) == 8 ? 0 : 1;
+ return sizeof(timestamp_t) == 8 ? 0 : 1;
else if (!strcmp(*argv, "time_t-is64bit"))
return sizeof(time_t) == 8 ? 0 : 1;
else
diff --git a/t/helper/test-parse-options.c b/t/helper/test-parse-options.c
index 7d93627..75fe883 100644
--- a/t/helper/test-parse-options.c
+++ b/t/helper/test-parse-options.c
@@ -5,7 +5,7 @@
static int boolean = 0;
static int integer = 0;
static unsigned long magnitude = 0;
-static unsigned long timestamp;
+static timestamp_t timestamp;
static int abbrev = 7;
static int verbose = -1; /* unspecified */
static int dry_run = 0, quiet = 0;
diff --git a/t/helper/test-ref-store.c b/t/helper/test-ref-store.c
index a436bfd..9077ec2 100644
--- a/t/helper/test-ref-store.c
+++ b/t/helper/test-ref-store.c
@@ -138,7 +138,7 @@ static int cmd_for_each_reflog(struct ref_store *refs, const char **argv)
}
static int each_reflog(struct object_id *old_oid, struct object_id *new_oid,
- const char *committer, unsigned long timestamp,
+ const char *committer, timestamp_t timestamp,
int tz, const char *msg, void *cb_data)
{
printf("%s %s %s %"PRItime" %d %s\n",