diff --git a/lib/libarchive/Makefile b/lib/libarchive/Makefile index fdf4a70c54c..c6468befab1 100644 --- a/lib/libarchive/Makefile +++ b/lib/libarchive/Makefile @@ -46,7 +46,6 @@ SRCS= archive.h \ archive_check_magic.c \ archive_entry.c \ archive_read.c \ - archive_read_data_into_buffer.c \ archive_read_data_into_fd.c \ archive_read_extract.c \ archive_read_open_fd.c \ diff --git a/lib/libarchive/archive_read.3 b/lib/libarchive/archive_read.3 index 46be4d4af14..21256b2589b 100644 --- a/lib/libarchive/archive_read.3 +++ b/lib/libarchive/archive_read.3 @@ -50,7 +50,9 @@ .Nm archive_read_data , .Nm archive_read_data_block , .Nm archive_read_data_skip , +.\" #if ARCHIVE_API_VERSION < 3 .Nm archive_read_data_into_buffer , +.\" #endif .Nm archive_read_data_into_fd , .Nm archive_read_extract , .Nm archive_read_extract_set_progress_callback , @@ -103,8 +105,10 @@ .Fn archive_read_data_block "struct archive *" "const void **buff" "size_t *len" "off_t *offset" .Ft int .Fn archive_read_data_skip "struct archive *" +.\" #if ARCHIVE_API_VERSION < 3 .Ft int .Fn archive_read_data_into_buffer "struct archive *" "void *" "ssize_t len" +.\" #endif .Ft int .Fn archive_read_data_into_fd "struct archive *" "int fd" .Ft int @@ -224,11 +228,10 @@ and internal buffer optimizations. A convenience function that repeatedly calls .Fn archive_read_data_block to skip all of the data for this archive entry. +.\" #if ARCHIVE_API_VERSION < 3 .It Fn archive_read_data_into_buffer -A convenience function that repeatedly calls -.Fn archive_read_data_block -to copy the entire entry into the client-supplied buffer. -Note that the client is responsible for sizing the buffer appropriately. +This function is deprecated and should not be used. +.\" #endif .It Fn archive_read_data_into_fd A convenience function that repeatedly calls .Fn archive_read_data_block diff --git a/lib/libarchive/archive_read.c b/lib/libarchive/archive_read.c index 2c0c6619268..4a62a994928 100644 --- a/lib/libarchive/archive_read.c +++ b/lib/libarchive/archive_read.c @@ -506,6 +506,22 @@ archive_read_data(struct archive *_a, void *buff, size_t s) return (bytes_read); } +#if ARCHIVE_API_VERSION < 3 +/* + * Obsolete function provided for compatibility only. Note that the API + * of this function doesn't allow the caller to detect if the remaining + * data from the archive entry is shorter than the buffer provided, or + * even if an error occurred while reading data. + */ +int +archive_read_data_into_buffer(struct archive *a, void *d, ssize_t len) +{ + + archive_read_data(a, d, len); + return (ARCHIVE_OK); +} +#endif + /* * Skip over all remaining data in this entry. */ diff --git a/lib/libarchive/archive_read_data_into_buffer.c b/lib/libarchive/archive_read_data_into_buffer.c deleted file mode 100644 index 2fa0d7ad89c..00000000000 --- a/lib/libarchive/archive_read_data_into_buffer.c +++ /dev/null @@ -1,50 +0,0 @@ -/*- - * Copyright (c) 2003-2007 Tim Kientzle - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include "archive_platform.h" -__FBSDID("$FreeBSD$"); - -#ifdef HAVE_STRING_H -#include -#endif - -#include "archive.h" - -int -archive_read_data_into_buffer(struct archive *a, void *d, ssize_t len) -{ - char *dest; - ssize_t bytes_read, total_bytes; - - dest = (char *)d; - total_bytes = 0; - bytes_read = archive_read_data(a, dest, len); - while (bytes_read > 0) { - total_bytes += bytes_read; - bytes_read = archive_read_data(a, dest + total_bytes, - len - total_bytes); - } - return (ARCHIVE_OK); -}