diff options
author | Stig Bjørlykke <stig@bjorlykke.org> | 2011-09-02 11:46:33 +0000 |
---|---|---|
committer | Stig Bjørlykke <stig@bjorlykke.org> | 2011-09-02 11:46:33 +0000 |
commit | 50be3577ab94da250faefb23c8952476c7ceacca (patch) | |
tree | 25d9c037a0d15400a26a9e98a9e7d0fc9e449cd3 /epan/column-utils.c | |
parent | afeee112207fd2961c293da93dfa7d42dfe22d56 (diff) |
Support negative nsecs when viewing seconds with hours and minutes.
svn path=/trunk/; revision=38862
Diffstat (limited to 'epan/column-utils.c')
-rw-r--r-- | epan/column-utils.c | 35 |
1 files changed, 20 insertions, 15 deletions
diff --git a/epan/column-utils.c b/epan/column-utils.c index e3397aa9a4..ae3bfb747c 100644 --- a/epan/column-utils.c +++ b/epan/column-utils.c @@ -771,12 +771,17 @@ static gint set_time_hour_min_sec(const nstime_t *ts, gchar *buf) { time_t secs = ts->secs; + long nsecs = (long) ts->nsecs; gboolean negative = FALSE; if (secs < 0) { secs = -secs; negative = TRUE; } + if (nsecs < 0) { + nsecs = -nsecs; + negative = TRUE; + } switch(timestamp_get_precision()) { case TS_PREC_FIXED_SEC: @@ -806,18 +811,18 @@ set_time_hour_min_sec(const nstime_t *ts, gchar *buf) (gint32) secs / (60 * 60), (gint32) (secs / 60) % 60, (gint32) secs % 60, - (long)ts->nsecs / 100000000); + nsecs / 100000000); } else if (secs >= 60) { g_snprintf(buf, COL_MAX_LEN, "%s%dm %2d.%01lds", negative ? "- " : "", (gint32) secs / 60, (gint32) secs % 60, - (long)ts->nsecs / 100000000); + nsecs / 100000000); } else { g_snprintf(buf, COL_MAX_LEN, "%s%d.%01lds", negative ? "- " : "", (gint32) secs, - (long)ts->nsecs / 100000000); + nsecs / 100000000); } break; case TS_PREC_FIXED_CSEC: @@ -828,18 +833,18 @@ set_time_hour_min_sec(const nstime_t *ts, gchar *buf) (gint32) secs / (60 * 60), (gint32) (secs / 60) % 60, (gint32) secs % 60, - (long)ts->nsecs / 10000000); + nsecs / 10000000); } else if (secs >= 60) { g_snprintf(buf, COL_MAX_LEN, "%s%dm %2d.%02lds", negative ? "- " : "", (gint32) secs / 60, (gint32) secs % 60, - (long)ts->nsecs / 10000000); + nsecs / 10000000); } else { g_snprintf(buf, COL_MAX_LEN, "%s%d.%02lds", negative ? "- " : "", (gint32) secs, - (long)ts->nsecs / 10000000); + nsecs / 10000000); } break; case TS_PREC_FIXED_MSEC: @@ -850,18 +855,18 @@ set_time_hour_min_sec(const nstime_t *ts, gchar *buf) (gint32) secs / (60 * 60), (gint32) (secs / 60) % 60, (gint32) secs % 60, - (long)ts->nsecs / 1000000); + nsecs / 1000000); } else if (secs >= 60) { g_snprintf(buf, COL_MAX_LEN, "%s%dm %2d.%03lds", negative ? "- " : "", (gint32) secs / 60, (gint32) secs % 60, - (long)ts->nsecs / 1000000); + nsecs / 1000000); } else { g_snprintf(buf, COL_MAX_LEN, "%s%d.%03lds", negative ? "- " : "", (gint32) secs, - (long)ts->nsecs / 1000000); + nsecs / 1000000); } break; case TS_PREC_FIXED_USEC: @@ -872,18 +877,18 @@ set_time_hour_min_sec(const nstime_t *ts, gchar *buf) (gint32) secs / (60 * 60), (gint32) (secs / 60) % 60, (gint32) secs % 60, - (long)ts->nsecs / 1000); + nsecs / 1000); } else if (secs >= 60) { g_snprintf(buf, COL_MAX_LEN, "%s%dm %2d.%06lds", negative ? "- " : "", (gint32) secs / 60, (gint32) secs % 60, - (long)ts->nsecs / 1000); + nsecs / 1000); } else { g_snprintf(buf, COL_MAX_LEN, "%s%d.%06lds", negative ? "- " : "", (gint32) secs, - (long)ts->nsecs / 1000); + nsecs / 1000); } break; case TS_PREC_FIXED_NSEC: @@ -894,18 +899,18 @@ set_time_hour_min_sec(const nstime_t *ts, gchar *buf) (gint32) secs / (60 * 60), (gint32) (secs / 60) % 60, (gint32) secs % 60, - (long)ts->nsecs); + nsecs); } else if (secs >= 60) { g_snprintf(buf, COL_MAX_LEN, "%s%dm %2d.%09lds", negative ? "- " : "", (gint32) secs / 60, (gint32) secs % 60, - (long)ts->nsecs); + nsecs); } else { g_snprintf(buf, COL_MAX_LEN, "%s%d.%09lds", negative ? "- " : "", (gint32) secs, - (long)ts->nsecs); + nsecs); } break; default: |