aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGuy Harris <guy@alum.mit.edu>2009-12-10 22:19:29 +0000
committerGuy Harris <guy@alum.mit.edu>2009-12-10 22:19:29 +0000
commit4fde145bd2dceda9edf1f231a57794965ddc0bd7 (patch)
tree7c14448b49715a60aefc583ab03dc2796a151499
parente1a76d5e2bfd3ecf9ab082a46dc2aa9c4bd4d4e2 (diff)
Add an argument to abs_time_to_str() and abs_time_secs_to_str()
indicating whether the time should be shown as local time or UTC. For now, always pass FALSE, meaning "show as local time". Clean up some stuff in the SNMP dissector, use abs_time_secs_to_str() for times with one-second resolution, and update a comment in various macros in the WSP dissector, while we're at it. svn path=/trunk/; revision=31227
-rw-r--r--asn1/snmp/packet-snmp-template.c9
-rw-r--r--epan/dissectors/packet-collectd.c2
-rw-r--r--epan/dissectors/packet-dhcp-failover.c16
-rw-r--r--epan/dissectors/packet-dmp.c10
-rw-r--r--epan/dissectors/packet-dnp.c10
-rw-r--r--epan/dissectors/packet-dns.c10
-rw-r--r--epan/dissectors/packet-dtn.c6
-rw-r--r--epan/dissectors/packet-icq.c2
-rw-r--r--epan/dissectors/packet-ipmi.c2
-rw-r--r--epan/dissectors/packet-ipp.c2
-rw-r--r--epan/dissectors/packet-kismet.c2
-rw-r--r--epan/dissectors/packet-mmse.c2
-rw-r--r--epan/dissectors/packet-ncp2222.inc44
-rw-r--r--epan/dissectors/packet-pktc.c2
-rw-r--r--epan/dissectors/packet-radius.c2
-rw-r--r--epan/dissectors/packet-snmp.c15
-rw-r--r--epan/dissectors/packet-time.c2
-rw-r--r--epan/dissectors/packet-wsp.c41
-rw-r--r--epan/ftypes/ftype-time.c4
-rw-r--r--epan/proto.c4
-rw-r--r--epan/to_str.c22
-rw-r--r--epan/to_str.h4
-rw-r--r--epan/wslua/wslua_util.c2
-rw-r--r--print.c2
24 files changed, 107 insertions, 110 deletions
diff --git a/asn1/snmp/packet-snmp-template.c b/asn1/snmp/packet-snmp-template.c
index 3566e48065..51c1f33bc1 100644
--- a/asn1/snmp/packet-snmp-template.c
+++ b/asn1/snmp/packet-snmp-template.c
@@ -998,9 +998,10 @@ int dissect_snmp_engineid(proto_tree *tree, tvbuff_t *tvb, int offset, int len)
proto_tree_add_item(tree, hf_snmp_engineid_data, tvb, offset, 4, FALSE);
seconds = tvb_get_letohl(tvb, offset+4);
ts.secs = seconds;
- proto_tree_add_time_format(tree, hf_snmp_engineid_time, tvb, offset+4, 4,
- &ts, "Engine ID Data: Creation Time: %s",
- abs_time_secs_to_str(seconds));
+ ts.nsecs = 0;
+ proto_tree_add_time_format_value(tree, hf_snmp_engineid_time, tvb, offset+4, 4,
+ &ts, "%s",
+ abs_time_secs_to_str(seconds, FALSE));
offset+=8;
len_remain=0;
}
@@ -1963,7 +1964,7 @@ void proto_register_snmp(void) {
"Engine ID Data: Text", "snmp.engineid.text", FT_STRING, BASE_NONE,
NULL, 0, NULL, HFILL }},
{ &hf_snmp_engineid_time, {
- "Engine ID Data: Time", "snmp.engineid.time", FT_ABSOLUTE_TIME, BASE_NONE,
+ "Engine ID Data: Creation Time", "snmp.engineid.time", FT_ABSOLUTE_TIME, BASE_NONE,
NULL, 0, NULL, HFILL }},
{ &hf_snmp_engineid_data, {
"Engine ID Data", "snmp.engineid.data", FT_BYTES, BASE_NONE,
diff --git a/epan/dissectors/packet-collectd.c b/epan/dissectors/packet-collectd.c
index ca1e97a80c..a219953b64 100644
--- a/epan/dissectors/packet-collectd.c
+++ b/epan/dissectors/packet-collectd.c
@@ -1114,7 +1114,7 @@ dissect_collectd (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
pkt_errors++;
else
{
- vdispatch.time_str = abs_time_secs_to_str ((time_t) vdispatch.time);
+ vdispatch.time_str = abs_time_secs_to_str ((time_t) vdispatch.time, FALSE);
ndispatch.time = vdispatch.time;
ndispatch.time_str = vdispatch.time_str;
diff --git a/epan/dissectors/packet-dhcp-failover.c b/epan/dissectors/packet-dhcp-failover.c
index 2caccc1d00..a2887a700a 100644
--- a/epan/dissectors/packet-dhcp-failover.c
+++ b/epan/dissectors/packet-dhcp-failover.c
@@ -446,7 +446,7 @@ dissect_dhcpfo_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
timex.nsecs = 0;
proto_tree_add_time_format_value(dhcpfo_tree, hf_dhcpfo_time, tvb,
offset, 4, &timex, "%s",
- abs_time_secs_to_str(timex.secs));
+ abs_time_secs_to_str(timex.secs, FALSE));
}
offset += 4;
@@ -669,7 +669,7 @@ dissect_dhcpfo_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
lease_expiration_time =
tvb_get_ntohl(tvb, offset);
lease_expiration_time_str =
- abs_time_secs_to_str(lease_expiration_time);
+ abs_time_secs_to_str(lease_expiration_time, FALSE);
proto_item_append_text(oi, ", %s",
lease_expiration_time_str);
@@ -693,7 +693,7 @@ dissect_dhcpfo_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
tvb_get_ntohl(tvb, offset);
potential_expiration_time_str =
- abs_time_secs_to_str(potential_expiration_time);
+ abs_time_secs_to_str(potential_expiration_time, FALSE);
proto_item_append_text(oi, ", %s",
potential_expiration_time_str);
@@ -717,7 +717,7 @@ dissect_dhcpfo_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
tvb_get_ntohl(tvb, offset);
grace_expiration_time_str =
- abs_time_secs_to_str(grace_expiration_time);
+ abs_time_secs_to_str(grace_expiration_time, FALSE);
proto_item_append_text(oi, ", %s",
grace_expiration_time_str);
@@ -740,7 +740,7 @@ dissect_dhcpfo_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
client_last_transaction_time =
tvb_get_ntohl(tvb, offset);
client_last_transaction_time_str =
- abs_time_secs_to_str(client_last_transaction_time);
+ abs_time_secs_to_str(client_last_transaction_time, FALSE);
proto_item_append_text(oi, ", %s",
client_last_transaction_time_str);
@@ -750,7 +750,7 @@ dissect_dhcpfo_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
offset, option_length,
client_last_transaction_time,
"%s",
- abs_time_secs_to_str(client_last_transaction_time));
+ abs_time_secs_to_str(client_last_transaction_time, FALSE));
break;
case DHCP_FO_PD_START_TIME_OF_STATE:
@@ -763,7 +763,7 @@ dissect_dhcpfo_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
start_time_of_state =
tvb_get_ntohl(tvb, offset);
start_time_of_state_str =
- abs_time_secs_to_str(start_time_of_state);
+ abs_time_secs_to_str(start_time_of_state, FALSE);
proto_item_append_text(oi, ", %s",
start_time_of_state_str);
@@ -773,7 +773,7 @@ dissect_dhcpfo_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
offset, option_length,
start_time_of_state,
"%s",
- abs_time_secs_to_str(start_time_of_state));
+ abs_time_secs_to_str(start_time_of_state, FALSE));
break;
case DHCP_FO_PD_SERVERSTATE:
diff --git a/epan/dissectors/packet-dmp.c b/epan/dissectors/packet-dmp.c
index 9085eee592..cd2edf3570 100644
--- a/epan/dissectors/packet-dmp.c
+++ b/epan/dissectors/packet-dmp.c
@@ -2498,7 +2498,7 @@ static gint dissect_dmp_envelope (tvbuff_t *tvb, packet_info *pinfo,
"Submission time: %s",
(subm_time & 0x7FFF) >= 0x7FF8 ?
"Reserved" :
- abs_time_secs_to_str (dmp.subm_time));
+ abs_time_secs_to_str (dmp.subm_time, FALSE));
field_tree = proto_item_add_subtree (tf, ett_envelope_subm_time);
proto_tree_add_item (field_tree, hf_envelope_time_diff_present, tvb,
offset, 2, FALSE);
@@ -3357,7 +3357,7 @@ static gint dissect_dmp_content (tvbuff_t *tvb, packet_info *pinfo,
proto_item_append_text (tf, "Reserved (0x%2.2x)", exp_time);
} else {
proto_item_append_text (tf, "%s (%s)", time_secs_to_str (secs),
- abs_time_secs_to_str (dmp.subm_time + secs));
+ abs_time_secs_to_str (dmp.subm_time + secs, FALSE));
}
offset += 1;
}
@@ -3380,13 +3380,13 @@ static gint dissect_dmp_content (tvbuff_t *tvb, packet_info *pinfo,
proto_item_append_text (tf, "0 minutes in the %s (%s)",
(dtg & 0x80) ? dtg_sign.true_string :
dtg_sign.false_string,
- abs_time_secs_to_str (dmp.subm_time));
+ abs_time_secs_to_str (dmp.subm_time, FALSE));
} else {
proto_item_append_text (tf, "%s in the %s (%s)", time_secs_to_str(secs),
(dtg & 0x80) ? dtg_sign.true_string :
dtg_sign.false_string, (dtg & 0x80) ?
- abs_time_secs_to_str (dmp.subm_time + secs) :
- abs_time_secs_to_str (dmp.subm_time - secs));
+ abs_time_secs_to_str (dmp.subm_time + secs, FALSE) :
+ abs_time_secs_to_str (dmp.subm_time - secs, FALSE));
}
offset += 1;
}
diff --git a/epan/dissectors/packet-dnp.c b/epan/dissectors/packet-dnp.c
index 4ad5ab83ca..0b8c5c4819 100644
--- a/epan/dissectors/packet-dnp.c
+++ b/epan/dissectors/packet-dnp.c
@@ -1567,7 +1567,7 @@ dnp3_al_process_object(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree
data_pos += 6;
al_bit = (al_ptflags & AL_OBJ_BI_FLAG7) >> 7; /* bit shift 1xxxxxxx -> xxxxxxx1 */
- proto_item_append_text(point_item, ", Value: %u, Timestamp: %s", al_bit, abs_time_to_str(&al_abstime));
+ proto_item_append_text(point_item, ", Value: %u, Timestamp: %s", al_bit, abs_time_to_str(&al_abstime, FALSE));
proto_item_set_len(point_item, data_pos - offset);
offset = data_pos;
@@ -1587,7 +1587,7 @@ dnp3_al_process_object(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree
data_pos += 6;
al_2bit = (al_ptflags >> 6) & 3; /* bit shift 11xxxxxx -> 00000011 */
- proto_item_append_text(point_item, ", Value: %u, Timestamp: %s", al_2bit, abs_time_to_str(&al_abstime));
+ proto_item_append_text(point_item, ", Value: %u, Timestamp: %s", al_2bit, abs_time_to_str(&al_abstime, FALSE));
proto_item_set_len(point_item, data_pos - offset);
offset = data_pos;
@@ -1610,7 +1610,7 @@ dnp3_al_process_object(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree
data_pos += 2;
al_bit = (al_ptflags & AL_OBJ_BI_FLAG7) >> 7; /* bit shift 1xxxxxxx -> xxxxxxx1 */
- proto_item_append_text(point_item, ", Value: %u, Timestamp: %s", al_bit, abs_time_to_str(&al_abstime));
+ proto_item_append_text(point_item, ", Value: %u, Timestamp: %s", al_bit, abs_time_to_str(&al_abstime, FALSE));
proto_item_set_len(point_item, data_pos - offset);
offset = data_pos;
@@ -1834,7 +1834,7 @@ dnp3_al_process_object(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree
case AL_OBJ_FDCTRC_32T:
case AL_OBJ_FDCTRC_16T:
dnp3_al_get_timestamp(&al_abstime, tvb, data_pos);
- proto_item_append_text(point_item, ", Timestamp: %s", abs_time_to_str(&al_abstime));
+ proto_item_append_text(point_item, ", Timestamp: %s", abs_time_to_str(&al_abstime, FALSE));
proto_tree_add_time(point_tree, hf_dnp3_al_timestamp, tvb, data_pos, 6, &al_abstime);
data_pos += 6;
break;
@@ -1941,7 +1941,7 @@ dnp3_al_process_object(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree
case AL_OBJ_AIFC_FLTT:
case AL_OBJ_AIFC_DBLT:
dnp3_al_get_timestamp(&al_abstime, tvb, data_pos);
- proto_item_append_text(point_item, ", Timestamp: %s", abs_time_to_str(&al_abstime));
+ proto_item_append_text(point_item, ", Timestamp: %s", abs_time_to_str(&al_abstime, FALSE));
proto_tree_add_time(point_tree, hf_dnp3_al_timestamp, tvb, data_pos, 6, &al_abstime);
data_pos += 6;
break;
diff --git a/epan/dissectors/packet-dns.c b/epan/dissectors/packet-dns.c
index cdfb874ef8..3000735690 100644
--- a/epan/dissectors/packet-dns.c
+++ b/epan/dissectors/packet-dns.c
@@ -1543,7 +1543,7 @@ dissect_dns_answer(tvbuff_t *tvb, int offsetx, int dns_data_offset,
nstime.secs = tvb_get_ntohl(tvb, cur_offset);
nstime.nsecs = 0;
proto_tree_add_text(rr_tree, tvb, cur_offset, 4, "Signature expiration: %s",
- abs_time_to_str(&nstime));
+ abs_time_to_str(&nstime, FALSE));
cur_offset += 4;
rr_len -= 4;
@@ -1552,7 +1552,7 @@ dissect_dns_answer(tvbuff_t *tvb, int offsetx, int dns_data_offset,
nstime.secs = tvb_get_ntohl(tvb, cur_offset);
nstime.nsecs = 0;
proto_tree_add_text(rr_tree, tvb, cur_offset, 4, "Time signed: %s",
- abs_time_to_str(&nstime));
+ abs_time_to_str(&nstime, FALSE));
cur_offset += 4;
rr_len -= 4;
@@ -2187,7 +2187,7 @@ dissect_dns_answer(tvbuff_t *tvb, int offsetx, int dns_data_offset,
nstime.secs = tvb_get_ntohl(tvb, cur_offset);
nstime.nsecs = 0;
proto_tree_add_text(rr_tree, tvb, cur_offset, 4, "Signature inception: %s",
- abs_time_to_str(&nstime));
+ abs_time_to_str(&nstime, FALSE));
cur_offset += 4;
rr_len -= 4;
@@ -2196,7 +2196,7 @@ dissect_dns_answer(tvbuff_t *tvb, int offsetx, int dns_data_offset,
nstime.secs = tvb_get_ntohl(tvb, cur_offset);
nstime.nsecs = 0;
proto_tree_add_text(rr_tree, tvb, cur_offset, 4, "Signature expiration: %s",
- abs_time_to_str(&nstime));
+ abs_time_to_str(&nstime, FALSE));
cur_offset += 4;
rr_len -= 4;
@@ -2314,7 +2314,7 @@ dissect_dns_answer(tvbuff_t *tvb, int offsetx, int dns_data_offset,
nstime.secs = tsig_timelo;
nstime.nsecs = 0;
proto_tree_add_text(rr_tree, tvb, cur_offset, 6, "Time signed: %s%s",
- abs_time_to_str(&nstime), tsig_timehi == 0 ? "" : "(high bits set)");
+ abs_time_to_str(&nstime, FALSE), tsig_timehi == 0 ? "" : "(high bits set)");
cur_offset += 6;
rr_len -= 6;
diff --git a/epan/dissectors/packet-dtn.c b/epan/dissectors/packet-dtn.c
index 6d8dd5026c..0a38fd12d3 100644
--- a/epan/dissectors/packet-dtn.c
+++ b/epan/dissectors/packet-dtn.c
@@ -1286,7 +1286,7 @@ dissect_version_5_primary_header(packet_info *pinfo,
return 0;
}
time_since_2000 = (time_t) (timestamp + 946684800);
- time_string = abs_time_secs_to_str(time_since_2000);
+ time_string = abs_time_secs_to_str(time_since_2000, FALSE);
proto_item_set_text(timestamp_item,
"Timestamp: 0x%x [%s]", timestamp, time_string);
offset += sdnv_length;
@@ -2093,7 +2093,7 @@ add_dtn_time_to_tree(proto_tree *tree, tvbuff_t *tvb, int offset, char *field_id
return 0;
}
time_since_2000 = (time_t) (sdnv_value + 946684800);
- time_string = abs_time_secs_to_str(time_since_2000);
+ time_string = abs_time_secs_to_str(time_since_2000, FALSE);
proto_tree_add_text(tree, tvb, offset, sdnv_length,
"%s (sec): %d [%s]", field_id, sdnv_value, time_string);
offset += sdnv_length;
@@ -2124,7 +2124,7 @@ add_sdnv_time_to_tree(proto_tree *tree, tvbuff_t *tvb, int offset, char *field_i
return 0;
}
time_since_2000 = (time_t) (sdnv_value + 946684800);
- time_string = abs_time_secs_to_str(time_since_2000);
+ time_string = abs_time_secs_to_str(time_since_2000, FALSE);
proto_tree_add_text(tree, tvb, offset, sdnv_length,
"%s: %d [%s]", field_id, sdnv_value, time_string);
return sdnv_length;
diff --git a/epan/dissectors/packet-icq.c b/epan/dissectors/packet-icq.c
index 8f44498fe9..253243b507 100644
--- a/epan/dissectors/packet-icq.c
+++ b/epan/dissectors/packet-icq.c
@@ -957,7 +957,7 @@ icqv5_cmd_login(proto_tree* tree, tvbuff_t *tvb, int offset, int size)
ti = proto_tree_add_text(tree, tvb, offset, size, "Body");
subtree = proto_item_add_subtree(ti, ett_icq_body);
theTime = tvb_get_letohl(tvb, offset + CMD_LOGIN_TIME);
- aTime = abs_time_secs_to_str(theTime);
+ aTime = abs_time_secs_to_str(theTime, FALSE);
proto_tree_add_text(subtree, tvb, offset + CMD_LOGIN_TIME, 4,
"Time: %ld = %s", (long)theTime, aTime);
port = tvb_get_letohl(tvb, offset + CMD_LOGIN_PORT);
diff --git a/epan/dissectors/packet-ipmi.c b/epan/dissectors/packet-ipmi.c
index d60554a230..6636277c97 100644
--- a/epan/dissectors/packet-ipmi.c
+++ b/epan/dissectors/packet-ipmi.c
@@ -781,7 +781,7 @@ ipmi_add_timestamp(proto_tree *tree, gint hf, tvbuff_t *tvb, guint offset)
time_secs_to_str_unsigned(ts));
} else {
proto_tree_add_uint_format_value(tree, hf, tvb, offset, 4,
- ts, "%s", abs_time_secs_to_str(ts));
+ ts, "%s", abs_time_secs_to_str(ts, FALSE));
}
}
diff --git a/epan/dissectors/packet-ipp.c b/epan/dissectors/packet-ipp.c
index 1634b83304..bf41158122 100644
--- a/epan/dissectors/packet-ipp.c
+++ b/epan/dissectors/packet-ipp.c
@@ -507,7 +507,7 @@ add_integer_tree(proto_tree *tree, tvbuff_t *tvb, int offset,
1 + 2 + name_length + 2 + value_length,
"%s: %s",
format_text(name_val, name_length),
- abs_time_secs_to_str(tvb_get_ntohl(tvb, offset + 1 + 2 + name_length + 2)));
+ abs_time_secs_to_str(tvb_get_ntohl(tvb, offset + 1 + 2 + name_length + 2), FALSE));
}
else if((name_length > 5) && name_val && !tvb_memeql(tvb, offset + 1 + 2, "printer-state", 13)){
diff --git a/epan/dissectors/packet-kismet.c b/epan/dissectors/packet-kismet.c
index ec2e465656..e3b4bcf874 100644
--- a/epan/dissectors/packet-kismet.c
+++ b/epan/dissectors/packet-kismet.c
@@ -249,7 +249,7 @@ dissect_kismet(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree)
/*
* Format ascii representaion of time
*/
- ptr = abs_time_secs_to_str(t);
+ ptr = abs_time_secs_to_str(t, FALSE);
proto_tree_add_text(reqresp_tree, tvb, offset,
tokenlen, "Time: %s", ptr);
}
diff --git a/epan/dissectors/packet-mmse.c b/epan/dissectors/packet-mmse.c
index 1c978d5cfe..82f1eca7bd 100644
--- a/epan/dissectors/packet-mmse.c
+++ b/epan/dissectors/packet-mmse.c
@@ -1207,7 +1207,7 @@ dissect_mmse(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint8 pdut,
&count2);
tmptime.secs = tval;
tmptime.nsecs = 0;
- strval = abs_time_to_str(&tmptime);
+ strval = abs_time_to_str(&tmptime, FALSE);
/* Now render the fields */
tvb_ensure_bytes_exist(tvb, offset - 1, length + count + 1);
ti = proto_tree_add_string_format(mmse_tree,
diff --git a/epan/dissectors/packet-ncp2222.inc b/epan/dissectors/packet-ncp2222.inc
index 50f6a7ce17..9dd856d024 100644
--- a/epan/dissectors/packet-ncp2222.inc
+++ b/epan/dissectors/packet-ncp2222.inc
@@ -3362,7 +3362,7 @@ print_nds_values(proto_tree *vtree, tvbuff_t *tvb, guint32 syntax_type, nds_val
voffset = voffset+4;
ns.secs = tvb_get_letohl(tvb, voffset);
ns.nsecs = 0;
- proto_tree_add_time_format(nvtree, hf_nds_ds_time, tvb, voffset, 4, &ns, "Timestamp: %s", abs_time_to_str(&ns));
+ proto_tree_add_time_format(nvtree, hf_nds_ds_time, tvb, voffset, 4, &ns, "Timestamp: %s", abs_time_secs_to_str(ns.secs, FALSE));
voffset = voffset + 4;
rnum = tvb_get_letohs(tvb, voffset); /* replica number */
proto_tree_add_uint_format(nvtree, hf_nds_rnum, tvb, voffset,
@@ -3396,7 +3396,7 @@ print_nds_values(proto_tree *vtree, tvbuff_t *tvb, guint32 syntax_type, nds_val
voffset += 4; /* This is the length of the time data no need to decode, always 4 bytes */
ns.secs = tvb_get_letohl(tvb, voffset);
ns.nsecs = 0;
- proto_tree_add_time_format(nvtree, hf_nds_ds_time, tvb, voffset, 4, &ns, "Time: %s", abs_time_to_str(&ns));
+ proto_tree_add_time_format(nvtree, hf_nds_ds_time, tvb, voffset, 4, &ns, "Time: %s", abs_time_secs_to_str(ns.secs, FALSE));
voffset = voffset + 4;
break;
case 0x00000019: /* Typed Name */
@@ -3611,7 +3611,7 @@ print_es_type(proto_tree *estree, tvbuff_t *tvb, nds_val *values, guint32 vtype,
ns.secs = tvb_get_letohl(tvb, ioffset); /* Seconds */
ns.nsecs = 0;
proto_tree_add_time_format(nestree, hf_es_seconds, tvb, ioffset,
- 4, &ns, "Timestamp: %s", abs_time_to_str(&ns));
+ 4, &ns, "Timestamp: %s", abs_time_secs_to_str(ns.secs, FALSE));
ioffset = ioffset + 4;
replica_num = tvb_get_letohs(tvb, ioffset); /* Replica */
proto_tree_add_item(nestree, hf_nds_replica_num, tvb, ioffset,
@@ -3696,7 +3696,7 @@ print_es_type(proto_tree *estree, tvbuff_t *tvb, nds_val *values, guint32 vtype,
ns.secs = tvb_get_letohl(tvb, ioffset); /* Seconds */
ns.nsecs = 0;
proto_tree_add_time_format(estree, hf_es_seconds, tvb, ioffset,
- 4, &ns, "Timestamp: %s", abs_time_to_str(&ns));
+ 4, &ns, "Timestamp: %s", abs_time_secs_to_str(ns.secs, FALSE));
ioffset = ioffset + 4;
replica_num = tvb_get_letohs(tvb, ioffset); /* Replica */
proto_tree_add_item(estree, hf_nds_replica_num, tvb, ioffset,
@@ -3843,7 +3843,7 @@ print_es_type(proto_tree *estree, tvbuff_t *tvb, nds_val *values, guint32 vtype,
ns.secs = tvb_get_letohl(tvb, ioffset); /* Seconds */
ns.nsecs = 0;
proto_tree_add_time_format(estree, hf_es_seconds, tvb, ioffset,
- 4, &ns, "Timestamp: %s", abs_time_to_str(&ns));
+ 4, &ns, "Timestamp: %s", abs_time_secs_to_str(ns.secs, FALSE));
ioffset = ioffset + 4;
replica_num = tvb_get_letohs(tvb, ioffset); /* Replica */
proto_tree_add_item(estree, hf_nds_replica_num, tvb, ioffset,
@@ -3894,7 +3894,7 @@ print_es_type(proto_tree *estree, tvbuff_t *tvb, nds_val *values, guint32 vtype,
ns.secs = tvb_get_letohl(tvb, ioffset); /* Seconds */
ns.nsecs = 0;
proto_tree_add_time_format(sub2tree, hf_es_seconds, tvb, ioffset,
- 4, &ns, "Timestamp: %s", abs_time_to_str(&ns));
+ 4, &ns, "Timestamp: %s", abs_time_secs_to_str(ns.secs, FALSE));
ioffset = ioffset + 4;
replica_num = tvb_get_letohs(tvb, ioffset); /* Replica */
proto_tree_add_item(sub2tree, hf_nds_replica_num, tvb, ioffset,
@@ -4442,14 +4442,14 @@ process_entry_info(proto_tree *it_tree, tvbuff_t *tvb, nds_val *values)
ns.secs = tvb_get_letohl(tvb, ioffset); /* Seconds */
ns.nsecs = 0;
proto_tree_add_time_format(it_tree, hf_es_seconds, tvb, ioffset,
- 4, &ns, "Modification Time: %s", abs_time_to_str(&ns));
+ 4, &ns, "Modification Time: %s", abs_time_secs_to_str(ns.secs, FALSE));
ioffset = ioffset + 4;
}
if (iter_flags & DSI_MODIFICATION_TIMESTAMP) { /* Modification Timestamp */
ns.secs = tvb_get_letohl(tvb, ioffset); /* Seconds */
ns.nsecs = 0;
proto_tree_add_time_format(it_tree, hf_es_seconds, tvb, ioffset,
- 4, &ns, "Modification Timestamp: %s", abs_time_to_str(&ns));
+ 4, &ns, "Modification Timestamp: %s", abs_time_secs_to_str(ns.secs, FALSE));
ioffset = ioffset + 4;
replica_num = tvb_get_letohs(tvb, ioffset); /* Replica */
proto_tree_add_item(it_tree, hf_nds_replica_num, tvb, ioffset,
@@ -4464,7 +4464,7 @@ process_entry_info(proto_tree *it_tree, tvbuff_t *tvb, nds_val *values)
ns.secs = tvb_get_letohl(tvb, ioffset); /* Seconds */
ns.nsecs = 0;
proto_tree_add_time_format(it_tree, hf_es_seconds, tvb, ioffset,
- 4, &ns, "Creation Timestamp: %s", abs_time_to_str(&ns));
+ 4, &ns, "Creation Timestamp: %s", abs_time_secs_to_str(ns.secs, FALSE));
ioffset = ioffset + 4;
replica_num = tvb_get_letohs(tvb, ioffset); /* Replica */
proto_tree_add_item(it_tree, hf_nds_replica_num, tvb, ioffset,
@@ -4566,7 +4566,7 @@ process_entry_info(proto_tree *it_tree, tvbuff_t *tvb, nds_val *values)
ns.secs = tvb_get_letohl(tvb, ioffset); /* Seconds */
ns.nsecs = 0;
proto_tree_add_time_format(it_tree, hf_nds_purge, tvb, ioffset,
- 4, &ns, "Purge Time: %s", abs_time_to_str(&ns));
+ 4, &ns, "Purge Time: %s", abs_time_secs_to_str(ns.secs, FALSE));
ioffset = ioffset + 4;
}
if (iter_flags & DSI_DEREFERENCED_BASE_CLASS) { /* Dereference Base Class */
@@ -5177,7 +5177,7 @@ process_multivalues(proto_tree *ncp_tree, tvbuff_t *tvb, packet_info *pinfo, nds
ns.secs = tvb_get_letohl(tvb, ioffset); /* Seconds */
ns.nsecs = 0;
proto_tree_add_time_format(atree, hf_es_seconds, tvb, ioffset,
- 4, &ns, "Timestamp: %s", abs_time_to_str(&ns));
+ 4, &ns, "Timestamp: %s", abs_time_secs_to_str(ns.secs, FALSE));
ioffset = ioffset + 4;
replica_num = tvb_get_letohs(tvb, ioffset); /* Replica */
proto_tree_add_item(atree, hf_nds_replica_num, tvb, ioffset,
@@ -5269,7 +5269,7 @@ process_multivalues(proto_tree *ncp_tree, tvbuff_t *tvb, packet_info *pinfo, nds
ns.secs = tvb_get_letohl(tvb, ioffset); /* Seconds */
ns.nsecs = 0;
proto_tree_add_time_format(ntree, hf_es_seconds, tvb, ioffset,
- 4, &ns, "Creation Time: %s", abs_time_to_str(&ns));
+ 4, &ns, "Creation Time: %s", abs_time_secs_to_str(ns.secs, FALSE));
ioffset = ioffset + 4;
replica_num = tvb_get_letohs(tvb, ioffset); /* Replica */
proto_tree_add_item(ntree, hf_nds_replica_num, tvb, ioffset,
@@ -5411,7 +5411,7 @@ process_multivalues(proto_tree *ncp_tree, tvbuff_t *tvb, packet_info *pinfo, nds
ns.secs = tvb_get_letohl(tvb, ioffset); /* Seconds */
ns.nsecs = 0;
proto_tree_add_time_format(ntree, hf_es_seconds, tvb, ioffset,
- 4, &ns, "Modification Timestamp: %s", abs_time_to_str(&ns));
+ 4, &ns, "Modification Timestamp: %s", abs_time_secs_to_str(ns.secs, FALSE));
ioffset = ioffset + 4;
replica_num = tvb_get_letohs(tvb, ioffset); /* Replica */
proto_tree_add_item(ntree, hf_nds_replica_num, tvb, ioffset,
@@ -5426,7 +5426,7 @@ process_multivalues(proto_tree *ncp_tree, tvbuff_t *tvb, packet_info *pinfo, nds
ns.secs = tvb_get_letohl(tvb, ioffset); /* Seconds */
ns.nsecs = 0;
proto_tree_add_time_format(ntree, hf_nds_purge, tvb, ioffset,
- 4, &ns, "Purge Time: %s", abs_time_to_str(&ns));
+ 4, &ns, "Purge Time: %s", abs_time_secs_to_str(ns.secs, FALSE));
ioffset = ioffset + 4;
break;
case 0x00000020: /*p3values.bit6 = "Local Partition ID"*/
@@ -5886,14 +5886,14 @@ process_multivalues(proto_tree *ncp_tree, tvbuff_t *tvb, packet_info *pinfo, nds
ns.secs = tvb_get_letohl(tvb, ioffset); /* Seconds */
ns.nsecs = 0;
proto_tree_add_time_format(ntree, hf_es_seconds, tvb, ioffset,
- 4, &ns, "Modification Time: %s", abs_time_to_str(&ns));
+ 4, &ns, "Modification Time: %s", abs_time_secs_to_str(ns.secs, FALSE));
ioffset = ioffset + 4;
break;
case 0x0000020: /* Modification Timestamp */
ns.secs = tvb_get_letohl(tvb, ioffset); /* Seconds */
ns.nsecs = 0;
proto_tree_add_time_format(ntree, hf_es_seconds, tvb, ioffset,
- 4, &ns, "Modification Timestamp: %s", abs_time_to_str(&ns));
+ 4, &ns, "Modification Timestamp: %s", abs_time_secs_to_str(ns.secs, FALSE));
ioffset = ioffset + 4;
replica_num = tvb_get_letohs(tvb, ioffset); /* Replica */
proto_tree_add_item(ntree, hf_nds_replica_num, tvb, ioffset,
@@ -5908,7 +5908,7 @@ process_multivalues(proto_tree *ncp_tree, tvbuff_t *tvb, packet_info *pinfo, nds
ns.secs = tvb_get_letohl(tvb, ioffset); /* Seconds */
ns.nsecs = 0;
proto_tree_add_time_format(ntree, hf_es_seconds, tvb, ioffset,
- 4, &ns, "Creation Timestamp: %s", abs_time_to_str(&ns));
+ 4, &ns, "Creation Timestamp: %s", abs_time_secs_to_str(ns.secs, FALSE));
ioffset = ioffset + 4;
replica_num = tvb_get_letohs(tvb, ioffset); /* Replica */
proto_tree_add_item(ntree, hf_nds_replica_num, tvb, ioffset,
@@ -6001,7 +6001,7 @@ process_multivalues(proto_tree *ncp_tree, tvbuff_t *tvb, packet_info *pinfo, nds
ns.secs = tvb_get_letohl(tvb, ioffset); /* Seconds */
ns.nsecs = 0;
proto_tree_add_time_format(ntree, hf_es_seconds, tvb, ioffset,
- 4, &ns, "Purge Time: %s", abs_time_to_str(&ns));
+ 4, &ns, "Purge Time: %s", abs_time_secs_to_str(ns.secs, FALSE));
ioffset = ioffset + 4;
break;
case 0x00020000: /* Dereference Base Class */
@@ -6265,7 +6265,7 @@ process_multivalues(proto_tree *ncp_tree, tvbuff_t *tvb, packet_info *pinfo, nds
ns.secs = tvb_get_letohl(tvb, ioffset); /* Seconds */
ns.nsecs = 0;
proto_tree_add_time_format(sub1tree, hf_es_seconds, tvb, ioffset,
- 4, &ns, "Creation Timestamp: %s", abs_time_to_str(&ns));
+ 4, &ns, "Creation Timestamp: %s", abs_time_secs_to_str(ns.secs, FALSE));
ioffset = ioffset + 4;
replica_num = tvb_get_letohs(tvb, ioffset); /* Replica */
proto_tree_add_item(sub1tree, hf_nds_replica_num, tvb, ioffset,
@@ -6278,7 +6278,7 @@ process_multivalues(proto_tree *ncp_tree, tvbuff_t *tvb, packet_info *pinfo, nds
ns.secs = tvb_get_letohl(tvb, ioffset); /* Seconds */
ns.nsecs = 0;
proto_tree_add_time_format(sub1tree, hf_es_seconds, tvb, ioffset,
- 4, &ns, "Modification Timestamp: %s", abs_time_to_str(&ns));
+ 4, &ns, "Modification Timestamp: %s", abs_time_secs_to_str(ns.secs, FALSE));
ioffset = ioffset + 4;
replica_num = tvb_get_letohs(tvb, ioffset); /* Replica */
proto_tree_add_item(sub1tree, hf_nds_replica_num, tvb, ioffset,
@@ -6498,7 +6498,7 @@ process_multivalues(proto_tree *ncp_tree, tvbuff_t *tvb, packet_info *pinfo, nds
ns.secs = tvb_get_letohl(tvb, ioffset); /* Seconds */
ns.nsecs = 0;
proto_tree_add_time_format(ntree, hf_es_seconds, tvb, ioffset,
- 4, &ns, "Creation Timestamp: %s", abs_time_to_str(&ns));
+ 4, &ns, "Creation Timestamp: %s", abs_time_secs_to_str(ns.secs, FALSE));
ioffset += 4;
replica_num = tvb_get_letohs(tvb, ioffset); /* Replica */
proto_tree_add_item(ntree, hf_nds_replica_num, tvb, ioffset,
@@ -6534,7 +6534,7 @@ process_multivalues(proto_tree *ncp_tree, tvbuff_t *tvb, packet_info *pinfo, nds
ns.secs = tvb_get_letohl(tvb, ioffset); /* Seconds */
ns.nsecs = 0;
proto_tree_add_time_format(sub2tree, hf_es_seconds, tvb, ioffset,
- 4, &ns, "Timestamp: %s", abs_time_to_str(&ns));
+ 4, &ns, "Timestamp: %s", abs_time_secs_to_str(ns.secs, FALSE));
ioffset += 4;
replica_num = tvb_get_letohs(tvb, ioffset); /* Replica */
proto_tree_add_item(sub2tree, hf_nds_replica_num, tvb, ioffset,
diff --git a/epan/dissectors/packet-pktc.c b/epan/dissectors/packet-pktc.c
index 020f7b7f3f..ebdaaa575c 100644
--- a/epan/dissectors/packet-pktc.c
+++ b/epan/dissectors/packet-pktc.c
@@ -517,7 +517,7 @@ dissect_pktc_mtafqdn_krbsafeuserdata(packet_info *pinfo, tvbuff_t *tvb, proto_tr
proto_tree_add_time_format(tree, hf_pktc_mtafqdn_manu_cert_revoked, tvb, offset, 4,
&ts, "%s: %s",
proto_registrar_get_name(hf_pktc_mtafqdn_manu_cert_revoked),
- (bignum==0) ? "not revoked" : abs_time_secs_to_str(bignum));
+ (bignum==0) ? "not revoked" : abs_time_secs_to_str(bignum, FALSE));
break;
case PKTC_MTAFQDN_REP:
diff --git a/epan/dissectors/packet-radius.c b/epan/dissectors/packet-radius.c
index 8aedcd49b3..e2e7bcbe35 100644
--- a/epan/dissectors/packet-radius.c
+++ b/epan/dissectors/packet-radius.c
@@ -709,7 +709,7 @@ void radius_date(radius_attr_info_t* a, proto_tree* tree, packet_info *pinfo _U_
time_ptr.nsecs = 0;
proto_tree_add_time(tree, a->hf, tvb, offset, len, &time_ptr);
- proto_item_append_text(avp_item, "%s", abs_time_to_str(&time_ptr));
+ proto_item_append_text(avp_item, "%s", abs_time_to_str(&time_ptr, FALSE));
}
void radius_abinary(radius_attr_info_t* a, proto_tree* tree, packet_info *pinfo _U_, tvbuff_t* tvb, int offset, int len, proto_item* avp_item) {
diff --git a/epan/dissectors/packet-snmp.c b/epan/dissectors/packet-snmp.c
index 47f19ab286..de910be5b9 100644
--- a/epan/dissectors/packet-snmp.c
+++ b/epan/dissectors/packet-snmp.c
@@ -1100,9 +1100,10 @@ int dissect_snmp_engineid(proto_tree *tree, tvbuff_t *tvb, int offset, int len)
proto_tree_add_item(tree, hf_snmp_engineid_data, tvb, offset, 4, FALSE);
seconds = tvb_get_letohl(tvb, offset+4);
ts.secs = seconds;
- proto_tree_add_time_format(tree, hf_snmp_engineid_time, tvb, offset+4, 4,
- &ts, "Engine ID Data: Creation Time: %s",
- abs_time_secs_to_str(seconds));
+ ts.nsecs = 0;
+ proto_tree_add_time_format_value(tree, hf_snmp_engineid_time, tvb, offset+4, 4,
+ &ts, "%s",
+ abs_time_secs_to_str(seconds, FALSE));
offset+=8;
len_remain=0;
}
@@ -2665,7 +2666,7 @@ static void dissect_SMUX_PDUs_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, pro
/*--- End of included file: packet-snmp-fn.c ---*/
-#line 1445 "packet-snmp-template.c"
+#line 1446 "packet-snmp-template.c"
guint
@@ -3187,7 +3188,7 @@ void proto_register_snmp(void) {
"Engine ID Data: Text", "snmp.engineid.text", FT_STRING, BASE_NONE,
NULL, 0, NULL, HFILL }},
{ &hf_snmp_engineid_time, {
- "Engine ID Data: Time", "snmp.engineid.time", FT_ABSOLUTE_TIME, BASE_NONE,
+ "Engine ID Data: Creation Time", "snmp.engineid.time", FT_ABSOLUTE_TIME, BASE_NONE,
NULL, 0, NULL, HFILL }},
{ &hf_snmp_engineid_data, {
"Engine ID Data", "snmp.engineid.data", FT_BYTES, BASE_NONE,
@@ -3487,7 +3488,7 @@ void proto_register_snmp(void) {
"snmp.T_operation", HFILL }},
/*--- End of included file: packet-snmp-hfarr.c ---*/
-#line 2002 "packet-snmp-template.c"
+#line 2003 "packet-snmp-template.c"
};
/* List of subtrees */
@@ -3527,7 +3528,7 @@ void proto_register_snmp(void) {
&ett_snmp_RReqPDU_U,
/*--- End of included file: packet-snmp-ettarr.c ---*/
-#line 2018 "packet-snmp-template.c"
+#line 2019 "packet-snmp-template.c"
};
module_t *snmp_module;
diff --git a/epan/dissectors/packet-time.c b/epan/dissectors/packet-time.c
index ee3fefe955..ee25df4f43 100644
--- a/epan/dissectors/packet-time.c
+++ b/epan/dissectors/packet-time.c
@@ -65,7 +65,7 @@ dissect_time(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
guint32 delta_seconds = tvb_get_ntohl(tvb, 0);
proto_tree_add_uint_format(time_tree, hf_time_time, tvb, 0, 4,
delta_seconds, "%s",
- abs_time_secs_to_str(delta_seconds-2208988800U));
+ abs_time_secs_to_str(delta_seconds-2208988800U, FALSE));
}
}
}
diff --git a/epan/dissectors/packet-wsp.c b/epan/dissectors/packet-wsp.c
index 7ac858e5b7..ace4e728ee 100644
--- a/epan/dissectors/packet-wsp.c
+++ b/epan/dissectors/packet-wsp.c
@@ -1738,7 +1738,6 @@ add_headers (proto_tree *tree, tvbuff_t *tvb, int hf, packet_info *pinfo)
proto_item *ti, *hidden_item;
guint8 ok;
guint32 val = 0;
- nstime_t tv;
if (! tree)
return;
@@ -1799,9 +1798,7 @@ add_headers (proto_tree *tree, tvbuff_t *tvb, int hf, packet_info *pinfo)
tvb, hdr_start, hdr_len + val_len,
"Requesting Time Of Day");
} else {
- tv.secs = val;
- tv.nsecs = 0;
- val_str = abs_time_to_str(&tv);
+ val_str = abs_time_secs_to_str(val, FALSE);
ti = proto_tree_add_string (wsp_headers,
hf_hdr_x_wap_tod,
tvb, hdr_start, hdr_len + val_len, val_str);
@@ -2834,7 +2831,6 @@ wkh_ ## underscored(proto_tree *tree, tvbuff_t *tvb, guint32 hdr_start, packet_i
{ \
wkh_0_Declarations; \
guint32 val = 0, off = val_start, len; \
- nstime_t tv; \
gchar *str; /* may not be freed! */ \
\
wkh_1_WellKnownValue; \
@@ -2848,15 +2844,12 @@ wkh_ ## underscored(proto_tree *tree, tvbuff_t *tvb, guint32 hdr_start, packet_i
if (val_id <= 4) { /* Length field already parsed by macro! */ \
get_date_value(val, tvb, off, len, ok); \
if (ok) { \
- tv.secs = val; \
- tv.nsecs = 0; \
- str = abs_time_to_str(&tv); \
+ str = abs_time_secs_to_str(val, FALSE); \
tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start); \
ti = proto_tree_add_string(tree, hf_hdr_ ## underscored, \
tvb, hdr_start, offset - hdr_start, str); \
- /* BEHOLD: do NOT try to free str, as this generates a core
- * dump! It looks like abs_time_to_str() is buggy or works
- * with static data. */ \
+ /* BEHOLD: do NOT try to free str, as \
+ * abs_time_secs_to_str() returns ep_allocated data */ \
} \
} \
wkh_4_End(hf_hdr_ ## underscored); \
@@ -2876,7 +2869,6 @@ wkh_ ## underscored(proto_tree *tree, tvbuff_t *tvb, guint32 hdr_start, packet_i
{ \
wkh_0_Declarations; \
guint32 val = 0, off = val_start, len; \
- nstime_t tv; \
gchar *str; /* may not be freed! */ \
\
wkh_1_WellKnownValue; \
@@ -2887,15 +2879,12 @@ wkh_ ## underscored(proto_tree *tree, tvbuff_t *tvb, guint32 hdr_start, packet_i
if (val_id <= 4) { /* Length field already parsed by macro! */ \
get_date_value(val, tvb, off, len, ok); \
if (ok) { \
- tv.secs = val; \
- tv.nsecs = 0; \
- str = abs_time_to_str(&tv); \
+ str = abs_time_secs_to_str(val, FALSE); \
tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start); \
ti = proto_tree_add_string(tree, hf_hdr_ ## underscored, \
tvb, hdr_start, offset - hdr_start, str); \
- /* BEHOLD: do NOT try to free str, as this generates a core
- * dump! It looks like abs_time_to_str() is buggy or works
- * with static data. */ \
+ /* BEHOLD: do NOT try to free str, as \
+ * abs_time_secs_to_str() returns ep_allocated data */ \
} \
} \
wkh_4_End(hf_hdr_ ## underscored); \
@@ -2916,7 +2905,6 @@ wkh_ ## underscored(proto_tree *tree, tvbuff_t *tvb, guint32 hdr_start, packet_i
{ \
wkh_0_Declarations; \
guint32 val = 0, off = val_start, len; \
- nstime_t tv; \
gchar *str; /* may not be freed! */ \
\
wkh_1_WellKnownValue; \
@@ -2944,9 +2932,7 @@ wkh_ ## underscored(proto_tree *tree, tvbuff_t *tvb, guint32 hdr_start, packet_i
tvb, hdr_start, offset - hdr_start, \
"Requesting Time Of Day"); \
} else { \
- tv.secs = val; \
- tv.nsecs = 0; \
- str = abs_time_to_str(&tv); \
+ str = abs_time_secs_to_str(val, FALSE); \
tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start); \
ti = proto_tree_add_string(tree, hf_hdr_ ## underscored, \
tvb, hdr_start, offset - hdr_start, str); \
@@ -3582,7 +3568,6 @@ wkh_profile_warning(proto_tree *tree, tvbuff_t *tvb, guint32 hdr_start, packet_i
{
wkh_0_Declarations;
guint32 off, len, val = 0;
- nstime_t tv;
guint8 warn_code;
gchar *str;
@@ -3617,16 +3602,12 @@ wkh_profile_warning(proto_tree *tree, tvbuff_t *tvb, guint32 hdr_start, packet_i
get_date_value(val, tvb, off, len, ok);
if (ok) { /* Valid warn-text string */
off += len;
- tv.secs = val;
- tv.nsecs = 0;
- val_str = abs_time_to_str(&tv);
+ val_str = abs_time_secs_to_str(val, FALSE);
str = g_strdup_printf("; date=%s", val_str);
proto_item_append_string(ti, str);
g_free(str); /* proto_XXX creates a copy */
- /* BEHOLD: do NOT try to free val_str, as this
- * generates a core dump!
- * It looks like abs_time_to_str() is
- * buggy or works with static data. */
+ /* BEHOLD: do NOT try to free str, as \
+ * abs_time_secs_to_str() returns ep_allocated data */ \
}
}
}
diff --git a/epan/ftypes/ftype-time.c b/epan/ftypes/ftype-time.c
index 15b33d2ca9..155bac9599 100644
--- a/epan/ftypes/ftype-time.c
+++ b/epan/ftypes/ftype-time.c
@@ -319,14 +319,14 @@ absolute_val_repr_len(fvalue_t *fv, ftrepr_t rtype _U_)
{
gchar *rep;
- rep = abs_time_to_str(&fv->value.time);
+ rep = abs_time_to_str(&fv->value.time, FALSE);
return (int)strlen(rep) + 2; /* 2 for opening and closing quotes */
}
static void
absolute_val_to_repr(fvalue_t *fv, ftrepr_t rtype _U_, char *buf)
{
- sprintf(buf, "\"%s\"", abs_time_to_str(&fv->value.time));
+ sprintf(buf, "\"%s\"", abs_time_to_str(&fv->value.time, FALSE));
}
static int
diff --git a/epan/proto.c b/epan/proto.c
index 46d94b5951..af01ce2959 100644
--- a/epan/proto.c
+++ b/epan/proto.c
@@ -3334,7 +3334,7 @@ proto_custom_set(proto_tree* tree, int field_id,
break;
case FT_ABSOLUTE_TIME:
- g_strlcpy(result, abs_time_to_str(fvalue_get(&finfo->value)), size);
+ g_strlcpy(result, abs_time_to_str(fvalue_get(&finfo->value), FALSE), size);
break;
case FT_RELATIVE_TIME:
@@ -4461,7 +4461,7 @@ proto_item_fill_label(field_info *fi, gchar *label_str)
case FT_ABSOLUTE_TIME:
g_snprintf(label_str, ITEM_LABEL_LENGTH,
"%s: %s", hfinfo->name,
- abs_time_to_str(fvalue_get(&fi->value)));
+ abs_time_to_str(fvalue_get(&fi->value), FALSE));
break;
case FT_RELATIVE_TIME:
diff --git a/epan/to_str.c b/epan/to_str.c
index 1a3e4a1646..065b9fb9d3 100644
--- a/epan/to_str.c
+++ b/epan/to_str.c
@@ -307,7 +307,7 @@ static const char *mon_names[12] = {
};
gchar *
-abs_time_to_str(nstime_t *abs_time)
+abs_time_to_str(nstime_t *abs_time, gboolean show_as_utc)
{
struct tm *tmp;
gchar *buf;
@@ -320,7 +320,10 @@ abs_time_to_str(nstime_t *abs_time)
tmp = NULL;
} else
#endif
- tmp = localtime(&abs_time->secs);
+ if (show_as_utc)
+ tmp = gmtime(&abs_time->secs);
+ else
+ tmp = localtime(&abs_time->secs);
if (tmp) {
buf = ep_strdup_printf("%s %2d, %d %02d:%02d:%02d.%09ld",
mon_names[tmp->tm_mon],
@@ -336,12 +339,23 @@ abs_time_to_str(nstime_t *abs_time)
}
gchar *
-abs_time_secs_to_str(time_t abs_time)
+abs_time_secs_to_str(time_t abs_time, gboolean show_as_utc)
{
struct tm *tmp;
gchar *buf;
- tmp = localtime(&abs_time);
+#ifdef _MSC_VER
+ /* calling localtime() on MSVC 2005 with huge values causes it to crash */
+ /* XXX - find the exact value that still does work */
+ /* XXX - using _USE_32BIT_TIME_T might be another way to circumvent this problem */
+ if(abs_time > 2000000000) {
+ tmp = NULL;
+ } else
+#endif
+ if (show_as_utc)
+ tmp = gmtime(&abs_time);
+ else
+ tmp = localtime(&abs_time);
if (tmp) {
buf = ep_strdup_printf("%s %2d, %d %02d:%02d:%02d",
mon_names[tmp->tm_mon],
diff --git a/epan/to_str.h b/epan/to_str.h
index 69d02a357c..a606c620f3 100644
--- a/epan/to_str.h
+++ b/epan/to_str.h
@@ -74,8 +74,8 @@ extern void vines_addr_to_str_buf(const guint8 *addrp, gchar *buf, int buf_len);
extern gchar* time_secs_to_str(gint32);
extern gchar* time_secs_to_str_unsigned(guint32);
extern gchar* time_msecs_to_str(gint32);
-extern gchar* abs_time_to_str(nstime_t*);
-extern gchar* abs_time_secs_to_str(time_t);
+extern gchar* abs_time_to_str(nstime_t*, gboolean);
+extern gchar* abs_time_secs_to_str(time_t, gboolean);
extern void display_signed_time(gchar *, int, gint32, gint32, time_res_t);
extern void display_epoch_time(gchar *, int, time_t, gint32, time_res_t);
diff --git a/epan/wslua/wslua_util.c b/epan/wslua/wslua_util.c
index 05fe37ebae..eb426feadf 100644
--- a/epan/wslua/wslua_util.c
+++ b/epan/wslua/wslua_util.c
@@ -64,7 +64,7 @@ WSLUA_FUNCTION wslua_format_date(lua_State* LS) { /* Formats an absolute timesta
then.secs = (guint32)floor(time);
then.nsecs = (guint32) ( (time-(double)(then.secs))*1000000000);
- str = abs_time_to_str(&then);
+ str = abs_time_to_str(&then, FALSE);
lua_pushstring(LS,str);
WSLUA_RETURN(1); /* A string with the formated date */
diff --git a/print.c b/print.c
index 7a52a5573a..c40e4dad64 100644
--- a/print.c
+++ b/print.c
@@ -550,7 +550,7 @@ print_pdml_geninfo(proto_tree *tree, FILE *fh)
/* Print geninfo.timestamp */
fprintf(fh,
" <field name=\"timestamp\" pos=\"0\" show=\"%s\" showname=\"Captured Time\" value=\"%d.%09d\" size=\"%u\"/>\n",
- abs_time_to_str(timestamp), (int) timestamp->secs, timestamp->nsecs, frame_finfo->length);
+ abs_time_to_str(timestamp, FALSE), (int) timestamp->secs, timestamp->nsecs, frame_finfo->length);
/* Print geninfo end */
fprintf(fh,