aboutsummaryrefslogtreecommitdiffstats
path: root/epan/column-utils.c
diff options
context:
space:
mode:
authorulfl <ulfl@f5534014-38df-0310-8fa8-9805f1628bb7>2005-08-25 21:29:54 +0000
committerulfl <ulfl@f5534014-38df-0310-8fa8-9805f1628bb7>2005-08-25 21:29:54 +0000
commitdfed34a85cb91cb36c7796d9c9acf3c0302e48a3 (patch)
treea0bd0c2272cf5b8f96e1364c0e2f7be960df4f69 /epan/column-utils.c
parentf24b7ea5d09fee42cbe065aec278e68ae829524e (diff)
timestamp display precision:
- automatic adjustment depending on file format - manual adjustment through menu items save the setting in the recent file git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@15534 f5534014-38df-0310-8fa8-9805f1628bb7
Diffstat (limited to 'epan/column-utils.c')
-rw-r--r--epan/column-utils.c200
1 files changed, 191 insertions, 9 deletions
diff --git a/epan/column-utils.c b/epan/column-utils.c
index 7120ce474a..d77b3c650a 100644
--- a/epan/column-utils.c
+++ b/epan/column-utils.c
@@ -476,7 +476,57 @@ col_set_abs_date_time(frame_data *fd, column_info *cinfo, int col)
then = fd->abs_ts.secs;
tmp = localtime(&then);
if (tmp != NULL) {
- g_snprintf(cinfo->col_buf[col], COL_MAX_LEN,
+ switch(timestamp_get_precision()) {
+ case(TS_PREC_FIXED_SEC):
+ case(TS_PREC_AUTO_SEC):
+ g_snprintf(cinfo->col_buf[col], COL_MAX_LEN,
+ "%04d-%02d-%02d %02d:%02d:%02d",
+ tmp->tm_year + 1900,
+ tmp->tm_mon + 1,
+ tmp->tm_mday,
+ tmp->tm_hour,
+ tmp->tm_min,
+ tmp->tm_sec);
+ break;
+ case(TS_PREC_FIXED_DSEC):
+ case(TS_PREC_AUTO_DSEC):
+ g_snprintf(cinfo->col_buf[col], COL_MAX_LEN,
+ "%04d-%02d-%02d %02d:%02d:%02d.%01ld",
+ tmp->tm_year + 1900,
+ tmp->tm_mon + 1,
+ tmp->tm_mday,
+ tmp->tm_hour,
+ tmp->tm_min,
+ tmp->tm_sec,
+ (long)fd->abs_ts.nsecs / 100000000);
+ break;
+ case(TS_PREC_FIXED_CSEC):
+ case(TS_PREC_AUTO_CSEC):
+ g_snprintf(cinfo->col_buf[col], COL_MAX_LEN,
+ "%04d-%02d-%02d %02d:%02d:%02d.%02ld",
+ tmp->tm_year + 1900,
+ tmp->tm_mon + 1,
+ tmp->tm_mday,
+ tmp->tm_hour,
+ tmp->tm_min,
+ tmp->tm_sec,
+ (long)fd->abs_ts.nsecs / 10000000);
+ break;
+ case(TS_PREC_FIXED_MSEC):
+ case(TS_PREC_AUTO_MSEC):
+ g_snprintf(cinfo->col_buf[col], COL_MAX_LEN,
+ "%04d-%02d-%02d %02d:%02d:%02d.%03ld",
+ tmp->tm_year + 1900,
+ tmp->tm_mon + 1,
+ tmp->tm_mday,
+ tmp->tm_hour,
+ tmp->tm_min,
+ tmp->tm_sec,
+ (long)fd->abs_ts.nsecs / 1000000);
+ break;
+ case(TS_PREC_FIXED_USEC):
+ case(TS_PREC_AUTO_USEC):
+ g_snprintf(cinfo->col_buf[col], COL_MAX_LEN,
"%04d-%02d-%02d %02d:%02d:%02d.%06ld",
tmp->tm_year + 1900,
tmp->tm_mon + 1,
@@ -484,7 +534,23 @@ col_set_abs_date_time(frame_data *fd, column_info *cinfo, int col)
tmp->tm_hour,
tmp->tm_min,
tmp->tm_sec,
- (long)fd->abs_ts.nsecs / 1000); /* XXX - this has to be improved */
+ (long)fd->abs_ts.nsecs / 1000);
+ break;
+ case(TS_PREC_FIXED_NSEC):
+ case(TS_PREC_AUTO_NSEC):
+ g_snprintf(cinfo->col_buf[col], COL_MAX_LEN,
+ "%04d-%02d-%02d %02d:%02d:%02d.%09ld",
+ tmp->tm_year + 1900,
+ tmp->tm_mon + 1,
+ tmp->tm_mday,
+ tmp->tm_hour,
+ tmp->tm_min,
+ tmp->tm_sec,
+ (long)fd->abs_ts.nsecs);
+ break;
+ default:
+ g_assert_not_reached();
+ }
} else {
cinfo->col_buf[col][0] = '\0';
}
@@ -496,8 +562,40 @@ col_set_abs_date_time(frame_data *fd, column_info *cinfo, int col)
static void
col_set_rel_time(frame_data *fd, column_info *cinfo, int col)
{
- display_signed_time(cinfo->col_buf[col], COL_MAX_LEN,
- fd->rel_ts.secs, fd->rel_ts.nsecs / 1000, USECS); /* XXX - this has to be improved */
+ switch(timestamp_get_precision()) {
+ case(TS_PREC_FIXED_SEC):
+ case(TS_PREC_AUTO_SEC):
+ display_signed_time(cinfo->col_buf[col], COL_MAX_LEN,
+ fd->rel_ts.secs, fd->rel_ts.nsecs / 1000000000, SECS);
+ break;
+ case(TS_PREC_FIXED_DSEC):
+ case(TS_PREC_AUTO_DSEC):
+ display_signed_time(cinfo->col_buf[col], COL_MAX_LEN,
+ fd->rel_ts.secs, fd->rel_ts.nsecs / 100000000, DSECS);
+ break;
+ case(TS_PREC_FIXED_CSEC):
+ case(TS_PREC_AUTO_CSEC):
+ display_signed_time(cinfo->col_buf[col], COL_MAX_LEN,
+ fd->rel_ts.secs, fd->rel_ts.nsecs / 10000000, CSECS);
+ break;
+ case(TS_PREC_FIXED_MSEC):
+ case(TS_PREC_AUTO_MSEC):
+ display_signed_time(cinfo->col_buf[col], COL_MAX_LEN,
+ fd->rel_ts.secs, fd->rel_ts.nsecs / 1000000, MSECS);
+ break;
+ case(TS_PREC_FIXED_USEC):
+ case(TS_PREC_AUTO_USEC):
+ display_signed_time(cinfo->col_buf[col], COL_MAX_LEN,
+ fd->rel_ts.secs, fd->rel_ts.nsecs / 1000, USECS);
+ break;
+ case(TS_PREC_FIXED_NSEC):
+ case(TS_PREC_AUTO_NSEC):
+ display_signed_time(cinfo->col_buf[col], COL_MAX_LEN,
+ fd->rel_ts.secs, fd->rel_ts.nsecs, NSECS);
+ break;
+ default:
+ g_assert_not_reached();
+ }
cinfo->col_data[col] = cinfo->col_buf[col];
strcpy(cinfo->col_expr[col],"frame.time_relative");
strcpy(cinfo->col_expr_val[col],cinfo->col_buf[col]);
@@ -506,8 +604,40 @@ col_set_rel_time(frame_data *fd, column_info *cinfo, int col)
static void
col_set_delta_time(frame_data *fd, column_info *cinfo, int col)
{
- display_signed_time(cinfo->col_buf[col], COL_MAX_LEN,
- fd->del_ts.secs, fd->del_ts.nsecs / 1000, USECS);
+ switch(timestamp_get_precision()) {
+ case(TS_PREC_FIXED_SEC):
+ case(TS_PREC_AUTO_SEC):
+ display_signed_time(cinfo->col_buf[col], COL_MAX_LEN,
+ fd->del_ts.secs, fd->del_ts.nsecs / 1000000000, SECS);
+ break;
+ case(TS_PREC_FIXED_DSEC):
+ case(TS_PREC_AUTO_DSEC):
+ display_signed_time(cinfo->col_buf[col], COL_MAX_LEN,
+ fd->del_ts.secs, fd->del_ts.nsecs / 100000000, DSECS);
+ break;
+ case(TS_PREC_FIXED_CSEC):
+ case(TS_PREC_AUTO_CSEC):
+ display_signed_time(cinfo->col_buf[col], COL_MAX_LEN,
+ fd->del_ts.secs, fd->del_ts.nsecs / 10000000, CSECS);
+ break;
+ case(TS_PREC_FIXED_MSEC):
+ case(TS_PREC_AUTO_MSEC):
+ display_signed_time(cinfo->col_buf[col], COL_MAX_LEN,
+ fd->del_ts.secs, fd->del_ts.nsecs / 1000000, MSECS);
+ break;
+ case(TS_PREC_FIXED_USEC):
+ case(TS_PREC_AUTO_USEC):
+ display_signed_time(cinfo->col_buf[col], COL_MAX_LEN,
+ fd->del_ts.secs, fd->del_ts.nsecs / 1000, USECS);
+ break;
+ case(TS_PREC_FIXED_NSEC):
+ case(TS_PREC_AUTO_NSEC):
+ display_signed_time(cinfo->col_buf[col], COL_MAX_LEN,
+ fd->del_ts.secs, fd->del_ts.nsecs, NSECS);
+ break;
+ default:
+ g_assert_not_reached();
+ }
cinfo->col_data[col] = cinfo->col_buf[col];
strcpy(cinfo->col_expr[col],"frame.time_delta");
strcpy(cinfo->col_expr_val[col],cinfo->col_buf[col]);
@@ -524,11 +654,63 @@ col_set_abs_time(frame_data *fd, column_info *cinfo, int col)
then = fd->abs_ts.secs;
tmp = localtime(&then);
if (tmp != NULL) {
- g_snprintf(cinfo->col_buf[col], COL_MAX_LEN, "%02d:%02d:%02d.%06ld",
+ switch(timestamp_get_precision()) {
+ case(TS_PREC_FIXED_SEC):
+ case(TS_PREC_AUTO_SEC):
+ g_snprintf(cinfo->col_buf[col], COL_MAX_LEN,
+ "%02d:%02d:%02d",
+ tmp->tm_hour,
+ tmp->tm_min,
+ tmp->tm_sec);
+ break;
+ case(TS_PREC_FIXED_DSEC):
+ case(TS_PREC_AUTO_DSEC):
+ g_snprintf(cinfo->col_buf[col], COL_MAX_LEN,
+ "%02d:%02d:%02d.%01ld",
+ tmp->tm_hour,
+ tmp->tm_min,
+ tmp->tm_sec,
+ (long)fd->abs_ts.nsecs / 100000000);
+ break;
+ case(TS_PREC_FIXED_CSEC):
+ case(TS_PREC_AUTO_CSEC):
+ g_snprintf(cinfo->col_buf[col], COL_MAX_LEN,
+ "%02d:%02d:%02d.%02ld",
+ tmp->tm_hour,
+ tmp->tm_min,
+ tmp->tm_sec,
+ (long)fd->abs_ts.nsecs / 10000000);
+ break;
+ case(TS_PREC_FIXED_MSEC):
+ case(TS_PREC_AUTO_MSEC):
+ g_snprintf(cinfo->col_buf[col], COL_MAX_LEN,
+ "%02d:%02d:%02d.%03ld",
+ tmp->tm_hour,
+ tmp->tm_min,
+ tmp->tm_sec,
+ (long)fd->abs_ts.nsecs / 1000000);
+ break;
+ case(TS_PREC_FIXED_USEC):
+ case(TS_PREC_AUTO_USEC):
+ g_snprintf(cinfo->col_buf[col], COL_MAX_LEN,
+ "%02d:%02d:%02d.%06ld",
+ tmp->tm_hour,
+ tmp->tm_min,
+ tmp->tm_sec,
+ (long)fd->abs_ts.nsecs / 1000);
+ break;
+ case(TS_PREC_FIXED_NSEC):
+ case(TS_PREC_AUTO_NSEC):
+ g_snprintf(cinfo->col_buf[col], COL_MAX_LEN,
+ "%02d:%02d:%02d.%09ld",
tmp->tm_hour,
tmp->tm_min,
tmp->tm_sec,
- (long)fd->abs_ts.nsecs / 1000); /* XXX - this has to be improved */
+ (long)fd->abs_ts.nsecs);
+ break;
+ default:
+ g_assert_not_reached();
+ }
} else {
cinfo->col_buf[col][0] = '\0';
}
@@ -547,7 +729,7 @@ col_set_abs_time(frame_data *fd, column_info *cinfo, int col)
void
col_set_cls_time(frame_data *fd, column_info *cinfo, int col)
{
- switch (get_timestamp_setting()) {
+ switch (timestamp_get_type()) {
case TS_ABSOLUTE:
col_set_abs_time(fd, cinfo, col);
break;