diff options
author | Ulf Lamping <ulf.lamping@web.de> | 2005-08-25 21:29:54 +0000 |
---|---|---|
committer | Ulf Lamping <ulf.lamping@web.de> | 2005-08-25 21:29:54 +0000 |
commit | 723c80ea90a3c56c069a0a99e22edd43b00cf357 (patch) | |
tree | a0bd0c2272cf5b8f96e1364c0e2f7be960df4f69 /epan/column-utils.c | |
parent | bd42437262d885f24cbf0fc96e4b2235aac695a3 (diff) |
timestamp display precision:
- automatic adjustment depending on file format
- manual adjustment through menu items
save the setting in the recent file
svn path=/trunk/; revision=15534
Diffstat (limited to 'epan/column-utils.c')
-rw-r--r-- | epan/column-utils.c | 200 |
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; |