diff options
author | Guy Harris <guy@alum.mit.edu> | 2013-06-16 00:20:00 +0000 |
---|---|---|
committer | Guy Harris <guy@alum.mit.edu> | 2013-06-16 00:20:00 +0000 |
commit | 8c9edf12800bc6d68894dc457e7ebaf994429da8 (patch) | |
tree | ec6efefbd4e7f8227a7b96661f721ff4ba2986c3 /wiretap/i4btrace.c | |
parent | 3846abe34d6861c6ee0bba61fcd5baa4d213885c (diff) |
Have the seek-read routines take a Buffer rather than a guint8 pointer
as the "where to put the packet data" argument.
This lets more of the libwiretap code be common between the read and
seek-read code paths, and also allows for more flexibility in the "fill
in the data" path - we can expand the buffer as needed in both cases.
svn path=/trunk/; revision=49949
Diffstat (limited to 'wiretap/i4btrace.c')
-rw-r--r-- | wiretap/i4btrace.c | 35 |
1 files changed, 6 insertions, 29 deletions
diff --git a/wiretap/i4btrace.c b/wiretap/i4btrace.c index a98d7a03bf..fbfb06afce 100644 --- a/wiretap/i4btrace.c +++ b/wiretap/i4btrace.c @@ -38,12 +38,10 @@ typedef struct { static gboolean i4btrace_read(wtap *wth, int *err, gchar **err_info, gint64 *data_offset); static gboolean i4btrace_seek_read(wtap *wth, gint64 seek_off, - struct wtap_pkthdr *phdr, guint8 *pd, int length, + struct wtap_pkthdr *phdr, Buffer *buf, int length, int *err, gchar **err_info); static int i4b_process_rec_header(wtap *wth, FILE_T fh, struct wtap_pkthdr *phdr, int *err, gchar **err_info); -static gboolean i4b_read_rec_data(FILE_T fh, guint8 *pd, int length, int *err, - gchar **err_info); /* * Test some fields in the header to see if they make sense. @@ -119,7 +117,6 @@ static gboolean i4btrace_read(wtap *wth, int *err, gchar **err_info, gint64 *data_offset) { int ret; - void *bufp; *data_offset = file_tell(wth->fh); @@ -133,17 +130,13 @@ static gboolean i4btrace_read(wtap *wth, int *err, gchar **err_info, /* * Read the packet data. */ - buffer_assure_space(wth->frame_buffer, wth->phdr.caplen); - bufp = buffer_start_ptr(wth->frame_buffer); - if (!i4b_read_rec_data(wth->fh, (guint8 *)bufp, wth->phdr.caplen, err, err_info)) - return FALSE; /* Read error */ - - return TRUE; + return wtap_read_packet_bytes(wth->fh, wth->frame_buffer, + wth->phdr.caplen, err, err_info); } static gboolean i4btrace_seek_read(wtap *wth, gint64 seek_off, struct wtap_pkthdr *phdr, - guint8 *pd, int length, int *err, gchar **err_info) + Buffer *buf, int length, int *err, gchar **err_info) { int ret; @@ -164,7 +157,8 @@ i4btrace_seek_read(wtap *wth, gint64 seek_off, struct wtap_pkthdr *phdr, /* * Read the packet data. */ - return i4b_read_rec_data(wth->random_fh, pd, length, err, err_info); + return wtap_read_packet_bytes(wth->random_fh, buf, length, err, + err_info); } static int @@ -269,20 +263,3 @@ i4b_process_rec_header(wtap *wth, FILE_T fh, struct wtap_pkthdr *phdr, return 1; } - -static gboolean -i4b_read_rec_data(FILE_T fh, guint8 *pd, int length, int *err, gchar **err_info) -{ - int bytes_read; - - errno = WTAP_ERR_CANT_READ; - bytes_read = file_read(pd, length, fh); - - if (bytes_read != length) { - *err = file_error(fh, err_info); - if (*err == 0) - *err = WTAP_ERR_SHORT_READ; - return FALSE; - } - return TRUE; -} |