aboutsummaryrefslogtreecommitdiffstats
path: root/wiretap/merge.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 /wiretap/merge.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 'wiretap/merge.c')
-rw-r--r--wiretap/merge.c20
1 files changed, 15 insertions, 5 deletions
diff --git a/wiretap/merge.c b/wiretap/merge.c
index 42aa35507d..2c3fdfcbf3 100644
--- a/wiretap/merge.c
+++ b/wiretap/merge.c
@@ -81,6 +81,9 @@ cleanup_in_file(merge_in_file_t *in_file)
g_array_free(in_file->idb_index_map, TRUE);
in_file->idb_index_map = NULL;
+
+ wtap_rec_cleanup(&in_file->rec);
+ ws_buffer_free(&in_file->frame_buffer);
}
static void
@@ -145,6 +148,8 @@ merge_open_in_files(guint in_file_count, const char *const *in_file_names,
*err_fileno = i;
return FALSE;
}
+ wtap_rec_init(&files[i].rec);
+ ws_buffer_init(&files[i].frame_buffer, 1500);
files[i].size = size;
files[i].idb_index_map = g_array_new(FALSE, FALSE, sizeof(guint));
}
@@ -264,7 +269,9 @@ merge_read_packet(int in_file_count, merge_in_file_t in_files[],
* No packet available, and we haven't seen an error or EOF yet,
* so try to read the next packet.
*/
- if (!wtap_read(in_files[i].wth, err, err_info, &data_offset)) {
+ if (!wtap_read(in_files[i].wth, &in_files[i].rec,
+ &in_files[i].frame_buffer, err, err_info,
+ &data_offset)) {
if (*err != 0) {
in_files[i].state = GOT_ERROR;
return &in_files[i];
@@ -275,7 +282,7 @@ merge_read_packet(int in_file_count, merge_in_file_t in_files[],
}
if (in_files[i].state == RECORD_PRESENT) {
- rec = wtap_get_rec(in_files[i].wth);
+ rec = &in_files[i].rec;
if (!(rec->presence_flags & WTAP_HAS_TS)) {
/*
* No time stamp. Pick this record, and stop looking.
@@ -348,7 +355,9 @@ merge_append_read_packet(int in_file_count, merge_in_file_t in_files[],
for (i = 0; i < in_file_count; i++) {
if (in_files[i].state == AT_EOF)
continue; /* This file is already at EOF */
- if (wtap_read(in_files[i].wth, err, err_info, &data_offset))
+ if (wtap_read(in_files[i].wth, &in_files[i].rec,
+ &in_files[i].frame_buffer, err, err_info,
+ &data_offset))
break; /* We have a packet */
if (*err != 0) {
/* Read error - quit immediately. */
@@ -876,7 +885,7 @@ merge_process_packets(wtap_dumper *pdh, const int file_type,
break;
}
- rec = wtap_get_rec(in_file->wth);
+ rec = &in_file->rec;
switch (rec->rec_type) {
@@ -926,7 +935,8 @@ merge_process_packets(wtap_dumper *pdh, const int file_type,
}
}
- if (!wtap_dump(pdh, rec, wtap_get_buf_ptr(in_file->wth), err, err_info)) {
+ if (!wtap_dump(pdh, rec, ws_buffer_start_ptr(&in_file->frame_buffer),
+ err, err_info)) {
status = MERGE_ERR_CANT_WRITE_OUTFILE;
break;
}