aboutsummaryrefslogtreecommitdiffstats
path: root/reordercap.c
diff options
context:
space:
mode:
authorGuy Harris <guy@alum.mit.edu>2019-04-04 18:56:27 -0700
committerGuy Harris <guy@alum.mit.edu>2019-04-05 02:49:43 +0000
commit8a5b26efb14b7f8f5375383436f03108d52d9aed (patch)
treeeb57791fc53deab1c618b259e11092f122a8ee97 /reordercap.c
parentb572b65e518937f43b630991c07369d8e0c79f53 (diff)
Have wtap_read() fill in a wtap_rec and Buffer.
That makes it - and the routines that implement it - work more like the seek-read routine. Change-Id: I0cace2d0e4c9ebfc21ac98fd1af1ec70f60a240d Reviewed-on: https://code.wireshark.org/review/32727 Petri-Dish: Guy Harris <guy@alum.mit.edu> Tested-by: Petri Dish Buildbot Reviewed-by: Guy Harris <guy@alum.mit.edu>
Diffstat (limited to 'reordercap.c')
-rw-r--r--reordercap.c21
1 files changed, 11 insertions, 10 deletions
diff --git a/reordercap.c b/reordercap.c
index 7f3463d89b..c72e082a2c 100644
--- a/reordercap.c
+++ b/reordercap.c
@@ -166,12 +166,11 @@ main(int argc, char *argv[])
char *init_progfile_dir_error;
wtap *wth = NULL;
wtap_dumper *pdh = NULL;
- wtap_rec dump_rec;
+ wtap_rec rec;
Buffer buf;
int err;
gchar *err_info;
gint64 data_offset;
- const wtap_rec *rec;
guint wrong_order_count = 0;
gboolean write_output_regardless = TRUE;
guint i;
@@ -284,16 +283,16 @@ main(int argc, char *argv[])
frames = g_ptr_array_new();
/* Read each frame from infile */
- while (wtap_read(wth, &err, &err_info, &data_offset)) {
+ wtap_rec_init(&rec);
+ ws_buffer_init(&buf, 1500);
+ while (wtap_read(wth, &rec, &buf, &err, &err_info, &data_offset)) {
FrameRecord_t *newFrameRecord;
- rec = wtap_get_rec(wth);
-
newFrameRecord = g_slice_new(FrameRecord_t);
newFrameRecord->num = frames->len + 1;
newFrameRecord->offset = data_offset;
- if (rec->presence_flags & WTAP_HAS_TS) {
- newFrameRecord->frame_time = rec->ts;
+ if (rec.presence_flags & WTAP_HAS_TS) {
+ newFrameRecord->frame_time = rec.ts;
} else {
nstime_set_unset(&newFrameRecord->frame_time);
}
@@ -305,6 +304,8 @@ main(int argc, char *argv[])
g_ptr_array_add(frames, newFrameRecord);
prevFrame = newFrameRecord;
}
+ wtap_rec_cleanup(&rec);
+ ws_buffer_free(&buf);
if (err != 0) {
/* Print a message noting that the read failed somewhere along the line. */
cfile_read_failure_message("reordercap", infile, err, err_info);
@@ -318,18 +319,18 @@ main(int argc, char *argv[])
}
/* Write out each sorted frame in turn */
- wtap_rec_init(&dump_rec);
+ wtap_rec_init(&rec);
ws_buffer_init(&buf, 1500);
for (i = 0; i < frames->len; i++) {
FrameRecord_t *frame = (FrameRecord_t *)frames->pdata[i];
/* Avoid writing if already sorted and configured to */
if (write_output_regardless || (wrong_order_count > 0)) {
- frame_write(frame, wth, pdh, &dump_rec, &buf, infile, outfile);
+ frame_write(frame, wth, pdh, &rec, &buf, infile, outfile);
}
g_slice_free(FrameRecord_t, frame);
}
- wtap_rec_cleanup(&dump_rec);
+ wtap_rec_cleanup(&rec);
ws_buffer_free(&buf);
if (!write_output_regardless && (wrong_order_count == 0)) {