diff options
author | Guy Harris <guy@alum.mit.edu> | 2014-05-23 16:40:56 -0700 |
---|---|---|
committer | Guy Harris <guy@alum.mit.edu> | 2014-05-23 23:41:21 +0000 |
commit | d470a468a63a081688ddc2c6d125e4e2edafecfc (patch) | |
tree | fade7330c732842355b5d957a2fe98e868bf3a49 /reordercap.c | |
parent | 9e2db542a28377d106c4dc99fff15499a4e26fd7 (diff) |
More handling of missing time stamps.
Make nstime_cmp() handle "unset" time stamps (they're equal to other
"unset" time stamps, and less than all other time stamps), use it in
reordercap, and "unset" the time stamp if it's absent.
Also, nstime_cmp() does not modify its argument, so make it const.
Change-Id: I016dab5fefaf4696e78cbd8c6dd3395808e54369
Reviewed-on: https://code.wireshark.org/review/1769
Reviewed-by: Guy Harris <guy@alum.mit.edu>
Diffstat (limited to 'reordercap.c')
-rw-r--r-- | reordercap.c | 31 |
1 files changed, 9 insertions, 22 deletions
diff --git a/reordercap.c b/reordercap.c index 4b363b84b1..ace835293c 100644 --- a/reordercap.c +++ b/reordercap.c @@ -135,9 +135,9 @@ frame_write(FrameRecord_t *frame, wtap *wth, wtap_dumper *pdh, Buffer *buf, } /* Comparing timestamps between 2 frames. - -1 if (t1 < t2) - 0 if (t1 == t2) - 1 if (t1 > t2) + negative if (t1 < t2) + zero if (t1 == t2) + positive if (t1 > t2) */ static int frames_compare(gconstpointer a, gconstpointer b) @@ -148,24 +148,7 @@ frames_compare(gconstpointer a, gconstpointer b) const nstime_t *time1 = &frame1->time; const nstime_t *time2 = &frame2->time; - if (time1->secs > time2->secs) - return 1; - if (time1->secs < time2->secs) - return -1; - - /* time1->secs == time2->secs */ - if (time1->nsecs > time2->nsecs) - return 1; - if (time1->nsecs < time2->nsecs) - return -1; - - /* time1->nsecs == time2->nsecs */ - - if (frame1->num > frame2->num) - return 1; - if (frame1->num < frame2->num) - return -1; - return 0; + return nstime_cmp(time1, time2); } @@ -269,7 +252,11 @@ int main(int argc, char *argv[]) newFrameRecord = g_slice_new(FrameRecord_t); newFrameRecord->num = frames->len + 1; newFrameRecord->offset = data_offset; - newFrameRecord->time = phdr->ts; + if (phdr->presence_flags & WTAP_HAS_TS) { + newFrameRecord->time = phdr->ts; + } else { + nstime_set_unset(&newFrameRecord->time); + } if (prevFrame && frames_compare(&newFrameRecord, &prevFrame) < 0) { wrong_order_count++; |