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 /wiretap/merge.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 'wiretap/merge.c')
-rw-r--r-- | wiretap/merge.c | 20 |
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; } |