diff options
Diffstat (limited to 'epan')
-rw-r--r-- | epan/column-utils.c | 295 | ||||
-rw-r--r-- | epan/column.c | 35 | ||||
-rw-r--r-- | epan/frame_data.c | 1 | ||||
-rw-r--r-- | epan/frame_data.h | 1 | ||||
-rw-r--r-- | epan/timestamp.c | 2 | ||||
-rw-r--r-- | epan/timestamp.h | 20 | ||||
-rw-r--r-- | epan/wslua/wslua_file.c | 12 |
7 files changed, 227 insertions, 139 deletions
diff --git a/epan/column-utils.c b/epan/column-utils.c index f27e4702c4..8721dbfb19 100644 --- a/epan/column-utils.c +++ b/epan/column-utils.c @@ -757,6 +757,7 @@ set_abs_ymd_time(const frame_data *fd, gchar *buf, gboolean local) { struct tm *tmp; time_t then; + int tsprecision; if (fd->flags.has_ts) { then = fd->abs_ts.secs; @@ -769,7 +770,31 @@ set_abs_ymd_time(const frame_data *fd, gchar *buf, gboolean local) if (tmp != NULL) { switch (timestamp_get_precision()) { case TS_PREC_FIXED_SEC: - case TS_PREC_AUTO_SEC: + tsprecision = WTAP_TSPREC_SEC; + break; + case TS_PREC_FIXED_DSEC: + tsprecision = WTAP_TSPREC_DSEC; + break; + case TS_PREC_FIXED_CSEC: + tsprecision = WTAP_TSPREC_CSEC; + break; + case TS_PREC_FIXED_MSEC: + tsprecision = WTAP_TSPREC_MSEC; + break; + case TS_PREC_FIXED_USEC: + tsprecision = WTAP_TSPREC_USEC; + break; + case TS_PREC_FIXED_NSEC: + tsprecision = WTAP_TSPREC_NSEC; + break; + case TS_PREC_AUTO: + tsprecision = fd->tsprec; + break; + default: + g_assert_not_reached(); + } + switch (tsprecision) { + case WTAP_TSPREC_SEC: g_snprintf(buf, COL_MAX_LEN,"%04d-%02d-%02d %02d:%02d:%02d", tmp->tm_year + 1900, tmp->tm_mon + 1, @@ -778,8 +803,7 @@ set_abs_ymd_time(const frame_data *fd, gchar *buf, gboolean local) tmp->tm_min, tmp->tm_sec); break; - case TS_PREC_FIXED_DSEC: - case TS_PREC_AUTO_DSEC: + case WTAP_TSPREC_DSEC: g_snprintf(buf, COL_MAX_LEN,"%04d-%02d-%02d %02d:%02d:%02d.%01d", tmp->tm_year + 1900, tmp->tm_mon + 1, @@ -789,8 +813,7 @@ set_abs_ymd_time(const frame_data *fd, gchar *buf, gboolean local) tmp->tm_sec, fd->abs_ts.nsecs / 100000000); break; - case TS_PREC_FIXED_CSEC: - case TS_PREC_AUTO_CSEC: + case WTAP_TSPREC_CSEC: g_snprintf(buf, COL_MAX_LEN,"%04d-%02d-%02d %02d:%02d:%02d.%02d", tmp->tm_year + 1900, tmp->tm_mon + 1, @@ -800,8 +823,7 @@ set_abs_ymd_time(const frame_data *fd, gchar *buf, gboolean local) tmp->tm_sec, fd->abs_ts.nsecs / 10000000); break; - case TS_PREC_FIXED_MSEC: - case TS_PREC_AUTO_MSEC: + case WTAP_TSPREC_MSEC: g_snprintf(buf, COL_MAX_LEN, "%04d-%02d-%02d %02d:%02d:%02d.%03d", tmp->tm_year + 1900, tmp->tm_mon + 1, @@ -811,8 +833,7 @@ set_abs_ymd_time(const frame_data *fd, gchar *buf, gboolean local) tmp->tm_sec, fd->abs_ts.nsecs / 1000000); break; - case TS_PREC_FIXED_USEC: - case TS_PREC_AUTO_USEC: + case WTAP_TSPREC_USEC: g_snprintf(buf, COL_MAX_LEN, "%04d-%02d-%02d %02d:%02d:%02d.%06d", tmp->tm_year + 1900, tmp->tm_mon + 1, @@ -822,8 +843,7 @@ set_abs_ymd_time(const frame_data *fd, gchar *buf, gboolean local) tmp->tm_sec, fd->abs_ts.nsecs / 1000); break; - case TS_PREC_FIXED_NSEC: - case TS_PREC_AUTO_NSEC: + case WTAP_TSPREC_NSEC: g_snprintf(buf, COL_MAX_LEN, "%04d-%02d-%02d %02d:%02d:%02d.%09d", tmp->tm_year + 1900, tmp->tm_mon + 1, @@ -866,6 +886,7 @@ set_abs_ydoy_time(const frame_data *fd, gchar *buf, gboolean local) { struct tm *tmp; time_t then; + int tsprecision; if (fd->flags.has_ts) { then = fd->abs_ts.secs; @@ -878,7 +899,31 @@ set_abs_ydoy_time(const frame_data *fd, gchar *buf, gboolean local) if (tmp != NULL) { switch (timestamp_get_precision()) { case TS_PREC_FIXED_SEC: - case TS_PREC_AUTO_SEC: + tsprecision = WTAP_TSPREC_SEC; + break; + case TS_PREC_FIXED_DSEC: + tsprecision = WTAP_TSPREC_DSEC; + break; + case TS_PREC_FIXED_CSEC: + tsprecision = WTAP_TSPREC_CSEC; + break; + case TS_PREC_FIXED_MSEC: + tsprecision = WTAP_TSPREC_MSEC; + break; + case TS_PREC_FIXED_USEC: + tsprecision = WTAP_TSPREC_USEC; + break; + case TS_PREC_FIXED_NSEC: + tsprecision = WTAP_TSPREC_NSEC; + break; + case TS_PREC_AUTO: + tsprecision = fd->tsprec; + break; + default: + g_assert_not_reached(); + } + switch (tsprecision) { + case WTAP_TSPREC_SEC: g_snprintf(buf, COL_MAX_LEN,"%04d/%03d %02d:%02d:%02d", tmp->tm_year + 1900, tmp->tm_yday + 1, @@ -886,8 +931,7 @@ set_abs_ydoy_time(const frame_data *fd, gchar *buf, gboolean local) tmp->tm_min, tmp->tm_sec); break; - case TS_PREC_FIXED_DSEC: - case TS_PREC_AUTO_DSEC: + case WTAP_TSPREC_DSEC: g_snprintf(buf, COL_MAX_LEN,"%04d/%03d %02d:%02d:%02d.%01d", tmp->tm_year + 1900, tmp->tm_yday + 1, @@ -896,8 +940,7 @@ set_abs_ydoy_time(const frame_data *fd, gchar *buf, gboolean local) tmp->tm_sec, fd->abs_ts.nsecs / 100000000); break; - case TS_PREC_FIXED_CSEC: - case TS_PREC_AUTO_CSEC: + case WTAP_TSPREC_CSEC: g_snprintf(buf, COL_MAX_LEN,"%04d/%03d %02d:%02d:%02d.%02d", tmp->tm_year + 1900, tmp->tm_yday + 1, @@ -906,8 +949,7 @@ set_abs_ydoy_time(const frame_data *fd, gchar *buf, gboolean local) tmp->tm_sec, fd->abs_ts.nsecs / 10000000); break; - case TS_PREC_FIXED_MSEC: - case TS_PREC_AUTO_MSEC: + case WTAP_TSPREC_MSEC: g_snprintf(buf, COL_MAX_LEN, "%04d/%03d %02d:%02d:%02d.%03d", tmp->tm_year + 1900, tmp->tm_yday + 1, @@ -916,8 +958,7 @@ set_abs_ydoy_time(const frame_data *fd, gchar *buf, gboolean local) tmp->tm_sec, fd->abs_ts.nsecs / 1000000); break; - case TS_PREC_FIXED_USEC: - case TS_PREC_AUTO_USEC: + case WTAP_TSPREC_USEC: g_snprintf(buf, COL_MAX_LEN, "%04d/%03d %02d:%02d:%02d.%06d", tmp->tm_year + 1900, tmp->tm_yday + 1, @@ -926,8 +967,7 @@ set_abs_ydoy_time(const frame_data *fd, gchar *buf, gboolean local) tmp->tm_sec, fd->abs_ts.nsecs / 1000); break; - case TS_PREC_FIXED_NSEC: - case TS_PREC_AUTO_NSEC: + case WTAP_TSPREC_NSEC: g_snprintf(buf, COL_MAX_LEN, "%04d/%03d %02d:%02d:%02d.%09d", tmp->tm_year + 1900, tmp->tm_yday + 1, @@ -965,36 +1005,57 @@ col_set_utc_ydoy_time(const frame_data *fd, column_info *cinfo, const int col) } static void -set_time_seconds(const nstime_t *ts, gchar *buf) +set_time_seconds(const frame_data *fd, const nstime_t *ts, gchar *buf) { + int tsprecision; + switch (timestamp_get_precision()) { case TS_PREC_FIXED_SEC: - case TS_PREC_AUTO_SEC: + tsprecision = WTAP_TSPREC_SEC; + break; + case TS_PREC_FIXED_DSEC: + tsprecision = WTAP_TSPREC_DSEC; + break; + case TS_PREC_FIXED_CSEC: + tsprecision = WTAP_TSPREC_CSEC; + break; + case TS_PREC_FIXED_MSEC: + tsprecision = WTAP_TSPREC_MSEC; + break; + case TS_PREC_FIXED_USEC: + tsprecision = WTAP_TSPREC_USEC; + break; + case TS_PREC_FIXED_NSEC: + tsprecision = WTAP_TSPREC_NSEC; + break; + case TS_PREC_AUTO: + tsprecision = fd->tsprec; + break; + default: + g_assert_not_reached(); + } + switch (tsprecision) { + case WTAP_TSPREC_SEC: display_signed_time(buf, COL_MAX_LEN, (gint32) ts->secs, ts->nsecs / 1000000000, TO_STR_TIME_RES_T_SECS); break; - case TS_PREC_FIXED_DSEC: - case TS_PREC_AUTO_DSEC: + case WTAP_TSPREC_DSEC: display_signed_time(buf, COL_MAX_LEN, (gint32) ts->secs, ts->nsecs / 100000000, TO_STR_TIME_RES_T_DSECS); break; - case TS_PREC_FIXED_CSEC: - case TS_PREC_AUTO_CSEC: + case WTAP_TSPREC_CSEC: display_signed_time(buf, COL_MAX_LEN, (gint32) ts->secs, ts->nsecs / 10000000, TO_STR_TIME_RES_T_CSECS); break; - case TS_PREC_FIXED_MSEC: - case TS_PREC_AUTO_MSEC: + case WTAP_TSPREC_MSEC: display_signed_time(buf, COL_MAX_LEN, (gint32) ts->secs, ts->nsecs / 1000000, TO_STR_TIME_RES_T_MSECS); break; - case TS_PREC_FIXED_USEC: - case TS_PREC_AUTO_USEC: + case WTAP_TSPREC_USEC: display_signed_time(buf, COL_MAX_LEN, (gint32) ts->secs, ts->nsecs / 1000, TO_STR_TIME_RES_T_USECS); break; - case TS_PREC_FIXED_NSEC: - case TS_PREC_AUTO_NSEC: + case WTAP_TSPREC_NSEC: display_signed_time(buf, COL_MAX_LEN, (gint32) ts->secs, ts->nsecs, TO_STR_TIME_RES_T_NSECS); break; @@ -1004,11 +1065,12 @@ set_time_seconds(const nstime_t *ts, gchar *buf) } static void -set_time_hour_min_sec(const nstime_t *ts, gchar *buf) +set_time_hour_min_sec(const frame_data *fd, const nstime_t *ts, gchar *buf) { time_t secs = ts->secs; long nsecs = (long) ts->nsecs; gboolean negative = FALSE; + int tsprecision; if (secs < 0) { secs = -secs; @@ -1021,7 +1083,31 @@ set_time_hour_min_sec(const nstime_t *ts, gchar *buf) switch (timestamp_get_precision()) { case TS_PREC_FIXED_SEC: - case TS_PREC_AUTO_SEC: + tsprecision = WTAP_TSPREC_SEC; + break; + case TS_PREC_FIXED_DSEC: + tsprecision = WTAP_TSPREC_DSEC; + break; + case TS_PREC_FIXED_CSEC: + tsprecision = WTAP_TSPREC_CSEC; + break; + case TS_PREC_FIXED_MSEC: + tsprecision = WTAP_TSPREC_MSEC; + break; + case TS_PREC_FIXED_USEC: + tsprecision = WTAP_TSPREC_USEC; + break; + case TS_PREC_FIXED_NSEC: + tsprecision = WTAP_TSPREC_NSEC; + break; + case TS_PREC_AUTO: + tsprecision = fd->tsprec; + break; + default: + g_assert_not_reached(); + } + switch (tsprecision) { + case WTAP_TSPREC_SEC: if (secs >= (60*60)) { g_snprintf(buf, COL_MAX_LEN, "%s%dh %2dm %2ds", negative ? "- " : "", @@ -1039,8 +1125,7 @@ set_time_hour_min_sec(const nstime_t *ts, gchar *buf) (gint32) secs); } break; - case TS_PREC_FIXED_DSEC: - case TS_PREC_AUTO_DSEC: + case WTAP_TSPREC_DSEC: if (secs >= (60*60)) { g_snprintf(buf, COL_MAX_LEN, "%s%dh %2dm %2d.%01lds", negative ? "- " : "", @@ -1061,8 +1146,7 @@ set_time_hour_min_sec(const nstime_t *ts, gchar *buf) nsecs / 100000000); } break; - case TS_PREC_FIXED_CSEC: - case TS_PREC_AUTO_CSEC: + case WTAP_TSPREC_CSEC: if (secs >= (60*60)) { g_snprintf(buf, COL_MAX_LEN, "%s%dh %2dm %2d.%02lds", negative ? "- " : "", @@ -1083,8 +1167,7 @@ set_time_hour_min_sec(const nstime_t *ts, gchar *buf) nsecs / 10000000); } break; - case TS_PREC_FIXED_MSEC: - case TS_PREC_AUTO_MSEC: + case WTAP_TSPREC_MSEC: if (secs >= (60*60)) { g_snprintf(buf, COL_MAX_LEN, "%s%dh %2dm %2d.%03lds", negative ? "- " : "", @@ -1105,8 +1188,7 @@ set_time_hour_min_sec(const nstime_t *ts, gchar *buf) nsecs / 1000000); } break; - case TS_PREC_FIXED_USEC: - case TS_PREC_AUTO_USEC: + case WTAP_TSPREC_USEC: if (secs >= (60*60)) { g_snprintf(buf, COL_MAX_LEN, "%s%dh %2dm %2d.%06lds", negative ? "- " : "", @@ -1127,8 +1209,7 @@ set_time_hour_min_sec(const nstime_t *ts, gchar *buf) nsecs / 1000); } break; - case TS_PREC_FIXED_NSEC: - case TS_PREC_AUTO_NSEC: + case WTAP_TSPREC_NSEC: if (secs >= (60*60)) { g_snprintf(buf, COL_MAX_LEN, "%s%dh %2dm %2d.%09lds", negative ? "- " : "", @@ -1168,14 +1249,14 @@ col_set_rel_time(const frame_data *fd, column_info *cinfo, const int col) switch (timestamp_get_seconds_type()) { case TS_SECONDS_DEFAULT: - set_time_seconds(&del_rel_ts, cinfo->col_buf[col]); + set_time_seconds(fd, &del_rel_ts, cinfo->col_buf[col]); cinfo->col_expr.col_expr[col] = "frame.time_relative"; g_strlcpy(cinfo->col_expr.col_expr_val[col],cinfo->col_buf[col],COL_MAX_LEN); break; case TS_SECONDS_HOUR_MIN_SEC: - set_time_hour_min_sec(&del_rel_ts, cinfo->col_buf[col]); + set_time_hour_min_sec(fd, &del_rel_ts, cinfo->col_buf[col]); cinfo->col_expr.col_expr[col] = "frame.time_relative"; - set_time_seconds(&del_rel_ts, cinfo->col_expr.col_expr_val[col]); + set_time_seconds(fd, &del_rel_ts, cinfo->col_expr.col_expr_val[col]); break; default: g_assert_not_reached(); @@ -1192,14 +1273,14 @@ col_set_delta_time(const frame_data *fd, column_info *cinfo, const int col) switch (timestamp_get_seconds_type()) { case TS_SECONDS_DEFAULT: - set_time_seconds(&del_cap_ts, cinfo->col_buf[col]); + set_time_seconds(fd, &del_cap_ts, cinfo->col_buf[col]); cinfo->col_expr.col_expr[col] = "frame.time_delta"; g_strlcpy(cinfo->col_expr.col_expr_val[col],cinfo->col_buf[col],COL_MAX_LEN); break; case TS_SECONDS_HOUR_MIN_SEC: - set_time_hour_min_sec(&del_cap_ts, cinfo->col_buf[col]); + set_time_hour_min_sec(fd, &del_cap_ts, cinfo->col_buf[col]); cinfo->col_expr.col_expr[col] = "frame.time_delta"; - set_time_seconds(&del_cap_ts, cinfo->col_expr.col_expr_val[col]); + set_time_seconds(fd, &del_cap_ts, cinfo->col_expr.col_expr_val[col]); break; default: g_assert_not_reached(); @@ -1222,14 +1303,14 @@ col_set_delta_time_dis(const frame_data *fd, column_info *cinfo, const int col) switch (timestamp_get_seconds_type()) { case TS_SECONDS_DEFAULT: - set_time_seconds(&del_dis_ts, cinfo->col_buf[col]); + set_time_seconds(fd, &del_dis_ts, cinfo->col_buf[col]); cinfo->col_expr.col_expr[col] = "frame.time_delta_displayed"; g_strlcpy(cinfo->col_expr.col_expr_val[col],cinfo->col_buf[col],COL_MAX_LEN); break; case TS_SECONDS_HOUR_MIN_SEC: - set_time_hour_min_sec(&del_dis_ts, cinfo->col_buf[col]); + set_time_hour_min_sec(fd, &del_dis_ts, cinfo->col_buf[col]); cinfo->col_expr.col_expr[col] = "frame.time_delta_displayed"; - set_time_seconds(&del_dis_ts, cinfo->col_expr.col_expr_val[col]); + set_time_seconds(fd, &del_dis_ts, cinfo->col_expr.col_expr_val[col]); break; default: g_assert_not_reached(); @@ -1243,6 +1324,7 @@ set_abs_time(const frame_data *fd, gchar *buf, gboolean local) { struct tm *tmp; time_t then; + int tsprecision; if (fd->flags.has_ts) { then = fd->abs_ts.secs; @@ -1255,46 +1337,65 @@ set_abs_time(const frame_data *fd, gchar *buf, gboolean local) if (tmp != NULL) { switch (timestamp_get_precision()) { case TS_PREC_FIXED_SEC: - case TS_PREC_AUTO_SEC: + tsprecision = WTAP_TSPREC_SEC; + break; + case TS_PREC_FIXED_DSEC: + tsprecision = WTAP_TSPREC_DSEC; + break; + case TS_PREC_FIXED_CSEC: + tsprecision = WTAP_TSPREC_CSEC; + break; + case TS_PREC_FIXED_MSEC: + tsprecision = WTAP_TSPREC_MSEC; + break; + case TS_PREC_FIXED_USEC: + tsprecision = WTAP_TSPREC_USEC; + break; + case TS_PREC_FIXED_NSEC: + tsprecision = WTAP_TSPREC_NSEC; + break; + case TS_PREC_AUTO: + tsprecision = fd->tsprec; + break; + default: + g_assert_not_reached(); + } + switch (tsprecision) { + case WTAP_TSPREC_SEC: g_snprintf(buf, 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: + case WTAP_TSPREC_DSEC: g_snprintf(buf, COL_MAX_LEN,"%02d:%02d:%02d.%01d", tmp->tm_hour, tmp->tm_min, tmp->tm_sec, fd->abs_ts.nsecs / 100000000); break; - case TS_PREC_FIXED_CSEC: - case TS_PREC_AUTO_CSEC: + case WTAP_TSPREC_CSEC: g_snprintf(buf, COL_MAX_LEN,"%02d:%02d:%02d.%02d", tmp->tm_hour, tmp->tm_min, tmp->tm_sec, fd->abs_ts.nsecs / 10000000); break; - case TS_PREC_FIXED_MSEC: - case TS_PREC_AUTO_MSEC: + case WTAP_TSPREC_MSEC: g_snprintf(buf, COL_MAX_LEN,"%02d:%02d:%02d.%03d", tmp->tm_hour, tmp->tm_min, tmp->tm_sec, fd->abs_ts.nsecs / 1000000); break; - case TS_PREC_FIXED_USEC: - case TS_PREC_AUTO_USEC: + case WTAP_TSPREC_USEC: g_snprintf(buf, COL_MAX_LEN,"%02d:%02d:%02d.%06d", tmp->tm_hour, tmp->tm_min, tmp->tm_sec, fd->abs_ts.nsecs / 1000); break; - case TS_PREC_FIXED_NSEC: - case TS_PREC_AUTO_NSEC: + case WTAP_TSPREC_NSEC: g_snprintf(buf, COL_MAX_LEN, "%02d:%02d:%02d.%09d", tmp->tm_hour, tmp->tm_min, @@ -1333,38 +1434,59 @@ col_set_utc_time(const frame_data *fd, column_info *cinfo, const int col) static gboolean set_epoch_time(const frame_data *fd, gchar *buf) { + int tsprecision; + if (!fd->flags.has_ts) { buf[0] = '\0'; return FALSE; } switch (timestamp_get_precision()) { case TS_PREC_FIXED_SEC: - case TS_PREC_AUTO_SEC: + tsprecision = WTAP_TSPREC_SEC; + break; + case TS_PREC_FIXED_DSEC: + tsprecision = WTAP_TSPREC_DSEC; + break; + case TS_PREC_FIXED_CSEC: + tsprecision = WTAP_TSPREC_CSEC; + break; + case TS_PREC_FIXED_MSEC: + tsprecision = WTAP_TSPREC_MSEC; + break; + case TS_PREC_FIXED_USEC: + tsprecision = WTAP_TSPREC_USEC; + break; + case TS_PREC_FIXED_NSEC: + tsprecision = WTAP_TSPREC_NSEC; + break; + case TS_PREC_AUTO: + tsprecision = fd->tsprec; + break; + default: + g_assert_not_reached(); + } + switch (tsprecision) { + case WTAP_TSPREC_SEC: display_epoch_time(buf, COL_MAX_LEN, fd->abs_ts.secs, fd->abs_ts.nsecs / 1000000000, TO_STR_TIME_RES_T_SECS); break; - case TS_PREC_FIXED_DSEC: - case TS_PREC_AUTO_DSEC: + case WTAP_TSPREC_DSEC: display_epoch_time(buf, COL_MAX_LEN, fd->abs_ts.secs, fd->abs_ts.nsecs / 100000000, TO_STR_TIME_RES_T_DSECS); break; - case TS_PREC_FIXED_CSEC: - case TS_PREC_AUTO_CSEC: + case WTAP_TSPREC_CSEC: display_epoch_time(buf, COL_MAX_LEN, fd->abs_ts.secs, fd->abs_ts.nsecs / 10000000, TO_STR_TIME_RES_T_CSECS); break; - case TS_PREC_FIXED_MSEC: - case TS_PREC_AUTO_MSEC: + case WTAP_TSPREC_MSEC: display_epoch_time(buf, COL_MAX_LEN, fd->abs_ts.secs, fd->abs_ts.nsecs / 1000000, TO_STR_TIME_RES_T_MSECS); break; - case TS_PREC_FIXED_USEC: - case TS_PREC_AUTO_USEC: + case WTAP_TSPREC_USEC: display_epoch_time(buf, COL_MAX_LEN, fd->abs_ts.secs, fd->abs_ts.nsecs / 1000, TO_STR_TIME_RES_T_USECS); break; - case TS_PREC_FIXED_NSEC: - case TS_PREC_AUTO_NSEC: + case WTAP_TSPREC_NSEC: display_epoch_time(buf, COL_MAX_LEN, fd->abs_ts.secs, fd->abs_ts.nsecs, TO_STR_TIME_RES_T_NSECS); break; @@ -1409,10 +1531,10 @@ set_fd_time(const epan_t *epan, frame_data *fd, gchar *buf) switch (timestamp_get_seconds_type()) { case TS_SECONDS_DEFAULT: - set_time_seconds(&del_rel_ts, buf); + set_time_seconds(fd, &del_rel_ts, buf); break; case TS_SECONDS_HOUR_MIN_SEC: - set_time_seconds(&del_rel_ts, buf); + set_time_seconds(fd, &del_rel_ts, buf); break; default: g_assert_not_reached(); @@ -1430,10 +1552,10 @@ set_fd_time(const epan_t *epan, frame_data *fd, gchar *buf) switch (timestamp_get_seconds_type()) { case TS_SECONDS_DEFAULT: - set_time_seconds(&del_cap_ts, buf); + set_time_seconds(fd, &del_cap_ts, buf); break; case TS_SECONDS_HOUR_MIN_SEC: - set_time_hour_min_sec(&del_cap_ts, buf); + set_time_hour_min_sec(fd, &del_cap_ts, buf); break; default: g_assert_not_reached(); @@ -1451,10 +1573,10 @@ set_fd_time(const epan_t *epan, frame_data *fd, gchar *buf) switch (timestamp_get_seconds_type()) { case TS_SECONDS_DEFAULT: - set_time_seconds(&del_dis_ts, buf); + set_time_seconds(fd, &del_dis_ts, buf); break; case TS_SECONDS_HOUR_MIN_SEC: - set_time_hour_min_sec(&del_dis_ts, buf); + set_time_hour_min_sec(fd, &del_dis_ts, buf); break; default: g_assert_not_reached(); @@ -1619,32 +1741,27 @@ col_set_time(column_info *cinfo, const gint el, const nstime_t *ts, const char * if (cinfo->fmt_matx[col][el]) { switch (timestamp_get_precision()) { case TS_PREC_FIXED_SEC: - case TS_PREC_AUTO_SEC: display_signed_time(cinfo->col_buf[col], COL_MAX_LEN, (gint32) ts->secs, ts->nsecs / 1000000000, TO_STR_TIME_RES_T_SECS); break; case TS_PREC_FIXED_DSEC: - case TS_PREC_AUTO_DSEC: display_signed_time(cinfo->col_buf[col], COL_MAX_LEN, (gint32) ts->secs, ts->nsecs / 100000000, TO_STR_TIME_RES_T_DSECS); break; case TS_PREC_FIXED_CSEC: - case TS_PREC_AUTO_CSEC: display_signed_time(cinfo->col_buf[col], COL_MAX_LEN, (gint32) ts->secs, ts->nsecs / 10000000, TO_STR_TIME_RES_T_CSECS); break; case TS_PREC_FIXED_MSEC: - case TS_PREC_AUTO_MSEC: display_signed_time(cinfo->col_buf[col], COL_MAX_LEN, (gint32) ts->secs, ts->nsecs / 1000000, TO_STR_TIME_RES_T_MSECS); break; case TS_PREC_FIXED_USEC: - case TS_PREC_AUTO_USEC: display_signed_time(cinfo->col_buf[col], COL_MAX_LEN, (gint32) ts->secs, ts->nsecs / 1000, TO_STR_TIME_RES_T_USECS); break; case TS_PREC_FIXED_NSEC: - case TS_PREC_AUTO_NSEC: + case TS_PREC_AUTO: /* default to maximum */ display_signed_time(cinfo->col_buf[col], COL_MAX_LEN, (gint32) ts->secs, ts->nsecs, TO_STR_TIME_RES_T_NSECS); break; diff --git a/epan/column.c b/epan/column.c index 4d23d9e5bc..8544f84b21 100644 --- a/epan/column.c +++ b/epan/column.c @@ -286,28 +286,23 @@ get_timestamp_column_longest_string(const gint type, const gint precision) case(TS_ABSOLUTE_WITH_YMD): case(TS_UTC_WITH_YMD): 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): + case(TS_PREC_AUTO): /* Leave enough room for the maximum */ return "0000-00-00 00:00:00.000000000"; break; default: @@ -317,28 +312,23 @@ get_timestamp_column_longest_string(const gint type, const gint precision) case(TS_ABSOLUTE_WITH_YDOY): case(TS_UTC_WITH_YDOY): switch(precision) { - case(TS_PREC_AUTO_SEC): case(TS_PREC_FIXED_SEC): return "0000/000 00:00:00"; break; - case(TS_PREC_AUTO_DSEC): case(TS_PREC_FIXED_DSEC): return "0000/000 00:00:00.0"; break; - case(TS_PREC_AUTO_CSEC): case(TS_PREC_FIXED_CSEC): return "0000/000 00:00:00.00"; break; - case(TS_PREC_AUTO_MSEC): case(TS_PREC_FIXED_MSEC): return "0000/000 00:00:00.000"; break; - case(TS_PREC_AUTO_USEC): case(TS_PREC_FIXED_USEC): return "0000/000 00:00:00.000000"; break; - case(TS_PREC_AUTO_NSEC): case(TS_PREC_FIXED_NSEC): + case(TS_PREC_AUTO): /* Leave enough room for the maximum */ return "0000/000 00:00:00.000000000"; break; default: @@ -348,28 +338,23 @@ get_timestamp_column_longest_string(const gint type, const gint precision) case(TS_ABSOLUTE): case(TS_UTC): 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): + case(TS_PREC_AUTO): /* Leave enough room for the maximum */ return "00:00:00.000000000"; break; default: @@ -380,28 +365,23 @@ get_timestamp_column_longest_string(const gint type, const gint precision) case(TS_DELTA): case(TS_DELTA_DIS): 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): + case(TS_PREC_AUTO): /* Leave enough room for the maximum */ return "0000.000000000"; break; default: @@ -411,28 +391,23 @@ get_timestamp_column_longest_string(const gint type, const gint precision) case(TS_EPOCH): /* This is enough to represent 2^63 (signed 64-bit integer) + fractions */ switch(precision) { - case(TS_PREC_AUTO_SEC): case(TS_PREC_FIXED_SEC): return "0000000000000000000"; break; - case(TS_PREC_AUTO_DSEC): case(TS_PREC_FIXED_DSEC): return "0000000000000000000.0"; break; - case(TS_PREC_AUTO_CSEC): case(TS_PREC_FIXED_CSEC): return "0000000000000000000.00"; break; - case(TS_PREC_AUTO_MSEC): case(TS_PREC_FIXED_MSEC): return "0000000000000000000.000"; break; - case(TS_PREC_AUTO_USEC): case(TS_PREC_FIXED_USEC): return "0000000000000000000.000000"; break; - case(TS_PREC_AUTO_NSEC): case(TS_PREC_FIXED_NSEC): + case(TS_PREC_AUTO): /* Leave enough room for the maximum */ return "0000000000000000000.000000000"; break; default: diff --git a/epan/frame_data.c b/epan/frame_data.c index bf403684f1..bfce771779 100644 --- a/epan/frame_data.c +++ b/epan/frame_data.c @@ -311,6 +311,7 @@ frame_data_init(frame_data *fdata, guint32 num, fdata->flags.has_ts = (phdr->presence_flags & WTAP_HAS_TS) ? 1 : 0; fdata->flags.has_phdr_comment = (phdr->opt_comment != NULL); fdata->flags.has_user_comment = 0; + fdata->tsprec = (gint16)phdr->pkt_tsprec; fdata->color_filter = NULL; fdata->abs_ts.secs = phdr->ts.secs; fdata->abs_ts.nsecs = phdr->ts.nsecs; diff --git a/epan/frame_data.h b/epan/frame_data.h index 58256357f4..996f4e1321 100644 --- a/epan/frame_data.h +++ b/epan/frame_data.h @@ -77,6 +77,7 @@ typedef struct _frame_data { unsigned int has_phdr_comment : 1; /** 1 = there's comment for this packet */ unsigned int has_user_comment : 1; /** 1 = user set (also deleted) comment for this packet */ } flags; + gint16 tsprec; /**< Time stamp precision */ const void *color_filter; /**< Per-packet matching color_filter_t object */ diff --git a/epan/timestamp.c b/epan/timestamp.c index bf0feabb0a..1feda0d8e1 100644 --- a/epan/timestamp.c +++ b/epan/timestamp.c @@ -28,7 +28,7 @@ * and distinguish it from a command line value */ static ts_type timestamp_type = TS_NOT_SET; -static int timestamp_precision = TS_PREC_AUTO_USEC; +static int timestamp_precision = TS_PREC_AUTO; static ts_seconds_type timestamp_seconds_type = TS_SECONDS_NOT_SET; diff --git a/epan/timestamp.h b/epan/timestamp.h index bbda35e64c..25a048ab90 100644 --- a/epan/timestamp.h +++ b/epan/timestamp.h @@ -52,19 +52,13 @@ typedef enum { } ts_type; typedef enum { - TS_PREC_AUTO, /* recent */ - TS_PREC_FIXED_SEC, /* recent and internal */ - TS_PREC_FIXED_DSEC, /* recent and internal */ - TS_PREC_FIXED_CSEC, /* recent and internal */ - TS_PREC_FIXED_MSEC, /* recent and internal */ - TS_PREC_FIXED_USEC, /* recent and internal */ - TS_PREC_FIXED_NSEC, /* recent and internal */ - TS_PREC_AUTO_SEC, /* internal */ - TS_PREC_AUTO_DSEC, /* internal */ - TS_PREC_AUTO_CSEC, /* internal */ - TS_PREC_AUTO_MSEC, /* internal */ - TS_PREC_AUTO_USEC, /* internal */ - TS_PREC_AUTO_NSEC /* internal */ + TS_PREC_AUTO, + TS_PREC_FIXED_SEC, + TS_PREC_FIXED_DSEC, + TS_PREC_FIXED_CSEC, + TS_PREC_FIXED_MSEC, + TS_PREC_FIXED_USEC, + TS_PREC_FIXED_NSEC } ts_precision; typedef enum { diff --git a/epan/wslua/wslua_file.c b/epan/wslua/wslua_file.c index f83eb29d20..81347aaae0 100644 --- a/epan/wslua/wslua_file.c +++ b/epan/wslua/wslua_file.c @@ -705,7 +705,7 @@ static CaptureInfo* push_CaptureInfo(lua_State* L, wtap *wth, const gboolean fir if (first_time) { /* XXX: need to do this? */ wth->file_encap = WTAP_ENCAP_UNKNOWN; - wth->tsprecision = WTAP_FILE_TSPREC_SEC; + wth->file_tsprec = WTAP_TSPREC_UNKNOWN; wth->snapshot_length = 0; } @@ -720,8 +720,8 @@ WSLUA_METAMETHOD CaptureInfo__tostring(lua_State* L) { lua_pushstring(L,"CaptureInfo pointer is NULL!"); } else { wtap *wth = fi->wth; - lua_pushfstring(L, "CaptureInfo: file_type_subtype=%d, snapshot_length=%d, pkt_encap=%d, tsprecision='%s'", - wth->file_type_subtype, wth->snapshot_length, wth->phdr.pkt_encap, wth->tsprecision); + lua_pushfstring(L, "CaptureInfo: file_type_subtype=%d, snapshot_length=%d, pkt_encap=%d, file_tsprec='%s'", + wth->file_type_subtype, wth->snapshot_length, wth->phdr.pkt_encap, wth->file_tsprec); } WSLUA_RETURN(1); /* String of debug information. */ @@ -747,8 +747,8 @@ WSLUA_ATTRIBUTE_NAMED_NUMBER_SETTER(CaptureInfo,encap,wth->file_encap,int); See `wtap_file_tsprec` in `init.lua` for available precisions. */ -WSLUA_ATTRIBUTE_NAMED_NUMBER_GETTER(CaptureInfo,time_precision,wth->tsprecision); -WSLUA_ATTRIBUTE_NAMED_NUMBER_SETTER(CaptureInfo,time_precision,wth->tsprecision,int); +WSLUA_ATTRIBUTE_NAMED_NUMBER_GETTER(CaptureInfo,time_precision,wth->file_tsprec); +WSLUA_ATTRIBUTE_NAMED_NUMBER_SETTER(CaptureInfo,time_precision,wth->file_tsprec,int); /* WSLUA_ATTRIBUTE CaptureInfo_snapshot_length RW The maximum packet length that could be recorded. @@ -979,7 +979,7 @@ WSLUA_METAMETHOD CaptureInfoConst__tostring(lua_State* L) { lua_pushstring(L,"CaptureInfoConst pointer is NULL!"); } else { wtap_dumper *wdh = fi->wdh; - lua_pushfstring(L, "CaptureInfoConst: file_type_subtype=%d, snaplen=%d, encap=%d, compressed=%d, tsprecision='%s'", + lua_pushfstring(L, "CaptureInfoConst: file_type_subtype=%d, snaplen=%d, encap=%d, compressed=%d, file_tsprec='%s'", wdh->file_type_subtype, wdh->snaplen, wdh->encap, wdh->compressed, wdh->tsprecision); } |