diff options
author | Guy Harris <guy@alum.mit.edu> | 2019-04-04 18:56:27 -0700 |
---|---|---|
committer | Guy Harris <guy@alum.mit.edu> | 2019-04-05 02:49:43 +0000 |
commit | 8a5b26efb14b7f8f5375383436f03108d52d9aed (patch) | |
tree | eb57791fc53deab1c618b259e11092f122a8ee97 /reordercap.c | |
parent | b572b65e518937f43b630991c07369d8e0c79f53 (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.c | 21 |
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)) { |