aboutsummaryrefslogtreecommitdiffstats
path: root/epan/column-utils.c
diff options
context:
space:
mode:
authorStig Bjørlykke <stig@bjorlykke.org>2011-09-02 11:46:33 +0000
committerStig Bjørlykke <stig@bjorlykke.org>2011-09-02 11:46:33 +0000
commit50be3577ab94da250faefb23c8952476c7ceacca (patch)
tree25d9c037a0d15400a26a9e98a9e7d0fc9e449cd3 /epan/column-utils.c
parentafeee112207fd2961c293da93dfa7d42dfe22d56 (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.c35
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: