aboutsummaryrefslogtreecommitdiffstats
path: root/epan/column.c
diff options
context:
space:
mode:
authorUlf Lamping <ulf.lamping@web.de>2005-08-25 21:29:54 +0000
committerUlf Lamping <ulf.lamping@web.de>2005-08-25 21:29:54 +0000
commit723c80ea90a3c56c069a0a99e22edd43b00cf357 (patch)
treea0bd0c2272cf5b8f96e1364c0e2f7be960df4f69 /epan/column.c
parentbd42437262d885f24cbf0fc96e4b2235aac695a3 (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.c')
-rw-r--r--epan/column.c128
1 files changed, 117 insertions, 11 deletions
diff --git a/epan/column.c b/epan/column.c
index 83d96d0004..90dae76709 100644
--- a/epan/column.c
+++ b/epan/column.c
@@ -214,6 +214,115 @@ get_column_format_matches(gboolean *fmt_list, gint format) {
}
}
+/* Returns a string representing the longest possible value for
+ a timestamp column type. */
+static const char *
+get_timestamp_column_longest_string(gint type, gint precision)
+{
+
+ switch(type) {
+ case(TS_ABSOLUTE_WITH_DATE):
+ switch(precision) {
+ case(TS_PREC_AUTO_SEC):
+ case(TS_PREC_FIXED_SEC):
+ return "0000-00-00 00:00:00";
+ break;
+ case(TS_PREC_AUTO_DSEC):
+ case(TS_PREC_FIXED_DSEC):
+ return "0000-00-00 00:00:00.0";
+ break;
+ case(TS_PREC_AUTO_CSEC):
+ case(TS_PREC_FIXED_CSEC):
+ return "0000-00-00 00:00:00.00";
+ break;
+ case(TS_PREC_AUTO_MSEC):
+ case(TS_PREC_FIXED_MSEC):
+ return "0000-00-00 00:00:00.000";
+ break;
+ case(TS_PREC_AUTO_USEC):
+ case(TS_PREC_FIXED_USEC):
+ return "0000-00-00 00:00:00.000000";
+ break;
+ case(TS_PREC_AUTO_NSEC):
+ case(TS_PREC_FIXED_NSEC):
+ return "0000-00-00 00:00:00.000000000";
+ break;
+ default:
+ g_assert_not_reached();
+ }
+ break;
+ case(TS_ABSOLUTE):
+ switch(precision) {
+ case(TS_PREC_AUTO_SEC):
+ case(TS_PREC_FIXED_SEC):
+ return "00:00:00";
+ break;
+ case(TS_PREC_AUTO_DSEC):
+ case(TS_PREC_FIXED_DSEC):
+ return "00:00:00.0";
+ break;
+ case(TS_PREC_AUTO_CSEC):
+ case(TS_PREC_FIXED_CSEC):
+ return "00:00:00.00";
+ break;
+ case(TS_PREC_AUTO_MSEC):
+ case(TS_PREC_FIXED_MSEC):
+ return "00:00:00.000";
+ break;
+ case(TS_PREC_AUTO_USEC):
+ case(TS_PREC_FIXED_USEC):
+ return "00:00:00.000000";
+ break;
+ case(TS_PREC_AUTO_NSEC):
+ case(TS_PREC_FIXED_NSEC):
+ return "00:00:00.000000000";
+ break;
+ default:
+ g_assert_not_reached();
+ }
+ break;
+ case(TS_RELATIVE): /* fallthrough */
+ case(TS_DELTA):
+ switch(precision) {
+ case(TS_PREC_AUTO_SEC):
+ case(TS_PREC_FIXED_SEC):
+ return "0000";
+ break;
+ case(TS_PREC_AUTO_DSEC):
+ case(TS_PREC_FIXED_DSEC):
+ return "0000.0";
+ break;
+ case(TS_PREC_AUTO_CSEC):
+ case(TS_PREC_FIXED_CSEC):
+ return "0000.00";
+ break;
+ case(TS_PREC_AUTO_MSEC):
+ case(TS_PREC_FIXED_MSEC):
+ return "0000.000";
+ break;
+ case(TS_PREC_AUTO_USEC):
+ case(TS_PREC_FIXED_USEC):
+ return "0000.000000";
+ break;
+ case(TS_PREC_AUTO_NSEC):
+ case(TS_PREC_FIXED_NSEC):
+ return "0000.000000000";
+ break;
+ default:
+ g_assert_not_reached();
+ }
+ break;
+ case(TS_NOT_SET):
+ return "0000.000000";
+ break;
+ default:
+ g_assert_not_reached();
+ }
+
+ /* never reached, satisfy compiler */
+ return "";
+}
+
/* Returns a string representing the longest possible value for a
particular column type.
@@ -234,22 +343,19 @@ get_column_longest_string(gint format)
return "0000000";
break;
case COL_CLS_TIME:
- if (get_timestamp_setting() == TS_ABSOLUTE)
- return "00:00:00.000000";
- else if (get_timestamp_setting() == TS_ABSOLUTE_WITH_DATE)
- return "0000-00-00 00:00:00.000000";
- else
- return "0000.000000";
- break;
- case COL_ABS_TIME:
- return "00:00:00.000000";
+ return get_timestamp_column_longest_string(timestamp_get_type(), timestamp_get_precision());
break;
case COL_ABS_DATE_TIME:
- return "0000-00-00 00:00:00.000000";
+ return get_timestamp_column_longest_string(TS_ABSOLUTE_WITH_DATE, timestamp_get_precision());
+ break;
+ case COL_ABS_TIME:
+ return get_timestamp_column_longest_string(TS_ABSOLUTE, timestamp_get_precision());
break;
case COL_REL_TIME:
+ return get_timestamp_column_longest_string(TS_RELATIVE, timestamp_get_precision());
+ break;
case COL_DELTA_TIME:
- return "0000.000000";
+ return get_timestamp_column_longest_string(TS_DELTA, timestamp_get_precision());
break;
case COL_DEF_SRC:
case COL_RES_SRC: