diff options
Diffstat (limited to 'wiretap/visual.c')
-rw-r--r-- | wiretap/visual.c | 19 |
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); |