diff options
author | Paul Eggert <eggert@cs.ucla.edu> | 2007-06-18 22:23:18 +0000 |
---|---|---|
committer | Paul Eggert <eggert@cs.ucla.edu> | 2007-06-18 22:23:18 +0000 |
commit | 2da851745e00e862d7afa4dda21276fc859d5c7f (patch) | |
tree | fbc324297445cda9a969db222b1a8070c285ca8f | |
parent | b8c8ac122f2f060c9998d20c94d71883bd3435d7 (diff) | |
download | diffutils-2da851745e00e862d7afa4dda21276fc859d5c7f.tar.gz |
* src/context.c (print_context_label): Don't assume that time_t
fits in long int, since it doesn't in FreeBSD/arm. Problem
reported by Xin Li in
<http://lists.gnu.org/archive/html/bug-gnu-utils/2007-06/msg00091.html>.
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | src/context.c | 20 |
2 files changed, 24 insertions, 3 deletions
@@ -1,3 +1,10 @@ +2007-06-18 Paul Eggert <eggert@cs.ucla.edu> + + * src/context.c (print_context_label): Don't assume that time_t + fits in long int, since it doesn't in FreeBSD/arm. Problem + reported by Xin Li in + <http://lists.gnu.org/archive/html/bug-gnu-utils/2007-06/msg00091.html>. + 2007-06-06 Paul Eggert <eggert@cs.ucla.edu> * NEWS: Mention new sdiff aliases 1 and 2 for l and r. diff --git a/src/context.c b/src/context.c index 8d4789a..3d50b79 100644 --- a/src/context.c +++ b/src/context.c @@ -54,9 +54,23 @@ print_context_label (char const *mark, int nsec = get_stat_mtime_ns (&inf->stat); if (! (tm && nstrftime (buf, sizeof buf, time_format, tm, 0, nsec))) { - long int sec = inf->stat.st_mtime; - verify (sizeof inf->stat.st_mtime <= sizeof sec); - sprintf (buf, "%ld.%.9d", sec, nsec); + verify ((time_t) 1.5 == 1); + if (LONG_MIN <= TYPE_MINIMUM (time_t) + && TYPE_MAXIMUM (time_t) <= LONG_MAX) + { + long int sec = inf->stat.st_mtime; + sprintf (buf, "%ld.%.9d", sec, nsec); + } + else if (TYPE_MAXIMUM (time_t) <= INTMAX_MAX) + { + intmax_t sec = inf->stat.st_mtime; + sprintf (buf, "%"PRIdMAX".%.9d", sec, nsec); + } + else + { + uintmax_t sec = inf->stat.st_mtime; + sprintf (buf, "%"PRIuMAX".%.9d", sec, nsec); + } } fprintf (outfile, "%s %s\t%s\n", mark, inf->name, buf); } |