aboutsummaryrefslogtreecommitdiffstats
path: root/reordercap.c
diff options
context:
space:
mode:
authorGuy Harris <guy@alum.mit.edu>2014-05-23 16:40:56 -0700
committerGuy Harris <guy@alum.mit.edu>2014-05-23 23:41:21 +0000
commitd470a468a63a081688ddc2c6d125e4e2edafecfc (patch)
treefade7330c732842355b5d957a2fe98e868bf3a49 /reordercap.c
parent9e2db542a28377d106c4dc99fff15499a4e26fd7 (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.c31
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++;