summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorcperciva <cperciva@FreeBSD.org>2007-04-05 15:51:19 +0000
committercperciva <cperciva@FreeBSD.org>2007-04-05 15:51:19 +0000
commit44021ff69137e8504972374860163a129e45810a (patch)
tree01fd418bd79b9b11b87128809b14ef6642cf0729 /lib
parent4d2fbcb41b2477001d2ee4af32075a064cfffbd7 (diff)
downloadFreeBSD-src-44021ff69137e8504972374860163a129e45810a.zip
FreeBSD-src-44021ff69137e8504972374860163a129e45810a.tar.gz
Move archive_read_data_into_buffer into archive_read.c, simplify its
implementation, and mark it as deprecated. It will be removed entirely in libarchive 3.0 (in FreeBSD 8.0?) but there's no reason for anyone to use it instead of archive_read_data. Approved by: kientzle
Diffstat (limited to 'lib')
-rw-r--r--lib/libarchive/Makefile1
-rw-r--r--lib/libarchive/archive_read.311
-rw-r--r--lib/libarchive/archive_read.c16
-rw-r--r--lib/libarchive/archive_read_data_into_buffer.c50
4 files changed, 23 insertions, 55 deletions
diff --git a/lib/libarchive/Makefile b/lib/libarchive/Makefile
index fdf4a70..c6468be 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 46be4d4..21256b2 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 2c0c661..4a62a99 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 2fa0d7a..0000000
--- 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 <string.h>
-#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);
-}
OpenPOWER on IntegriCloud