summaryrefslogtreecommitdiff
path: root/wiretap/visual.c
diff options
context:
space:
mode:
Diffstat (limited to 'wiretap/visual.c')
-rw-r--r--wiretap/visual.c19
1 files changed, 7 insertions, 12 deletions
diff --git a/wiretap/visual.c b/wiretap/visual.c
index 4da7e707df..29e16becf3 100644
--- a/wiretap/visual.c
+++ b/wiretap/visual.c
@@ -141,14 +141,14 @@ struct visual_read_info
{
guint32 num_pkts; /* Number of pkts in the file */
guint32 current_pkt; /* Next packet to be read */
- guint64 start_time; /* Capture start time in microseconds */
+ guint32 start_time; /* Capture start time in seconds */
};
/* Additional information for writing Visual files */
struct visual_write_info
{
- guint start_time; /* Capture start time in seconds */
+ guint start_time; /* Capture start time in seconds */
int index_table_index; /* Index of the next index entry */
int index_table_size; /* Allocated size of the index table */
guint32 * index_table; /* File offsets for the packets */
@@ -260,7 +260,7 @@ wtap_open_return_val visual_open(wtap *wth, int *err, gchar **err_info)
visual = (struct visual_read_info *)g_malloc(sizeof(struct visual_read_info));
wth->priv = (void *)visual;
visual->num_pkts = pletoh32(&vfile_hdr.num_pkts);
- visual->start_time = ((guint64) pletoh32(&vfile_hdr.start_time)) * 1000000;
+ visual->start_time = pletoh32(&vfile_hdr.start_time);
visual->current_pkt = 1;
return WTAP_OPEN_MINE;
@@ -317,9 +317,7 @@ visual_read_packet(wtap *wth, FILE_T fh, struct wtap_pkthdr *phdr,
struct visual_pkt_hdr vpkt_hdr;
guint32 packet_size;
struct visual_atm_hdr vatm_hdr;
- guint64 t;
- time_t secs;
- guint32 usecs;
+ guint32 relmsecs;
guint32 packet_status;
guint8 *pd;
@@ -336,12 +334,9 @@ visual_read_packet(wtap *wth, FILE_T fh, struct wtap_pkthdr *phdr,
phdr->presence_flags = WTAP_HAS_TS|WTAP_HAS_CAP_LEN;
/* Set the packet time and length. */
- t = visual->start_time;
- t += ((guint64)pletoh32(&vpkt_hdr.ts_delta))*1000;
- secs = (time_t)(t/1000000);
- usecs = (guint32)(t - secs*1000000);
- phdr->ts.secs = secs;
- phdr->ts.nsecs = usecs * 1000;
+ relmsecs = pletoh32(&vpkt_hdr.ts_delta);
+ phdr->ts.secs = (guint64)visual->start_time + relmsecs/1000;
+ phdr->ts.nsecs = (relmsecs % 1000)*1000000;
phdr->len = pletoh16(&vpkt_hdr.orig_len);