svn commit: r215233 - stable/8/lib/libarchive

Tim Kientzle kientzle at FreeBSD.org
Sat Nov 13 06:07:40 UTC 2010


Author: kientzle
Date: Sat Nov 13 06:07:39 2010
New Revision: 215233
URL: http://svn.freebsd.org/changeset/base/215233

Log:
  MFC archive_file_count() utility function.

Modified:
  stable/8/lib/libarchive/Makefile
  stable/8/lib/libarchive/archive.h
  stable/8/lib/libarchive/archive_private.h
  stable/8/lib/libarchive/archive_read.c
  stable/8/lib/libarchive/archive_util.3
  stable/8/lib/libarchive/archive_util.c
  stable/8/lib/libarchive/archive_virtual.c
Directory Properties:
  stable/8/lib/libarchive/   (props changed)

Modified: stable/8/lib/libarchive/Makefile
==============================================================================
--- stable/8/lib/libarchive/Makefile	Sat Nov 13 06:00:27 2010	(r215232)
+++ stable/8/lib/libarchive/Makefile	Sat Nov 13 06:07:39 2010	(r215233)
@@ -227,6 +227,7 @@ MLINKS+=	archive_util.3 archive_compress
 MLINKS+=	archive_util.3 archive_compression_name.3
 MLINKS+=	archive_util.3 archive_errno.3
 MLINKS+=	archive_util.3 archive_error_string.3
+MLINKS+=	archive_util.3 archive_file_count.3
 MLINKS+=	archive_util.3 archive_format.3
 MLINKS+=	archive_util.3 archive_format_name.3
 MLINKS+=	archive_util.3 archive_set_error.3

Modified: stable/8/lib/libarchive/archive.h
==============================================================================
--- stable/8/lib/libarchive/archive.h	Sat Nov 13 06:00:27 2010	(r215232)
+++ stable/8/lib/libarchive/archive.h	Sat Nov 13 06:07:39 2010	(r215233)
@@ -704,6 +704,7 @@ __LA_DECL void		 archive_set_error(struc
 			    const char *fmt, ...);
 __LA_DECL void		 archive_copy_error(struct archive *dest,
 			    struct archive *src);
+__LA_DECL int		 archive_file_count(struct archive *);
 
 #ifdef __cplusplus
 }

Modified: stable/8/lib/libarchive/archive_private.h
==============================================================================
--- stable/8/lib/libarchive/archive_private.h	Sat Nov 13 06:00:27 2010	(r215232)
+++ stable/8/lib/libarchive/archive_private.h	Sat Nov 13 06:07:39 2010	(r215233)
@@ -25,6 +25,10 @@
  * $FreeBSD$
  */
 
+#ifndef __LIBARCHIVE_BUILD
+#error This header is only to be used internally to libarchive.
+#endif
+
 #ifndef ARCHIVE_PRIVATE_H_INCLUDED
 #define	ARCHIVE_PRIVATE_H_INCLUDED
 
@@ -87,9 +91,11 @@ struct archive {
 	const char *compression_name;
 
 	/* Position in UNCOMPRESSED data stream. */
-	off_t		  file_position;
+	int64_t		  file_position;
 	/* Position in COMPRESSED data stream. */
-	off_t		  raw_position;
+	int64_t		  raw_position;
+	/* Number of file entries processed. */
+	int		  file_count;
 
 	int		  archive_error_number;
 	const char	 *error;
@@ -107,4 +113,12 @@ int	__archive_parse_options(const char *
 
 #define	err_combine(a,b)	((a) < (b) ? (a) : (b))
 
+#if defined(__BORLANDC__) || (defined(_MSC_VER) &&  _MSC_VER <= 1300)
+# define	ARCHIVE_LITERAL_LL(x)	x##i64
+# define	ARCHIVE_LITERAL_ULL(x)	x##ui64
+#else
+# define	ARCHIVE_LITERAL_LL(x)	x##ll
+# define	ARCHIVE_LITERAL_ULL(x)	x##ull
+#endif
+
 #endif

Modified: stable/8/lib/libarchive/archive_read.c
==============================================================================
--- stable/8/lib/libarchive/archive_read.c	Sat Nov 13 06:00:27 2010	(r215232)
+++ stable/8/lib/libarchive/archive_read.c	Sat Nov 13 06:07:39 2010	(r215233)
@@ -386,6 +386,7 @@ archive_read_next_header2(struct archive
 	    ARCHIVE_STATE_HEADER | ARCHIVE_STATE_DATA,
 	    "archive_read_next_header");
 
+	++_a->file_count;
 	archive_entry_clear(entry);
 	archive_clear_error(&a->archive);
 

Modified: stable/8/lib/libarchive/archive_util.3
==============================================================================
--- stable/8/lib/libarchive/archive_util.3	Sat Nov 13 06:00:27 2010	(r215232)
+++ stable/8/lib/libarchive/archive_util.3	Sat Nov 13 06:07:39 2010	(r215233)
@@ -34,6 +34,7 @@
 .Nm archive_copy_error ,
 .Nm archive_errno ,
 .Nm archive_error_string ,
+.Nm archive_file_count ,
 .Nm archive_format ,
 .Nm archive_format_name ,
 .Nm archive_set_error
@@ -53,6 +54,8 @@
 .Ft const char *
 .Fn archive_error_string "struct archive *"
 .Ft int
+.Fn archive_file_count "struct archive *"
+.Ft int
 .Fn archive_format "struct archive *"
 .Ft const char *
 .Fn archive_format_name "struct archive *"
@@ -92,6 +95,12 @@ obtained from passing the result of
 .Fn archive_errno
 to
 .Xr strerror 3 .
+.It Fn archive_file_count
+Returns a count of the number of files processed by this archive object.
+The count is incremented by calls to
+.Xr archive_write_header
+or
+.Xr archive_read_next_header .
 .It Fn archive_format
 Returns a numeric code indicating the format of the current
 archive entry.

Modified: stable/8/lib/libarchive/archive_util.c
==============================================================================
--- stable/8/lib/libarchive/archive_util.c	Sat Nov 13 06:00:27 2010	(r215232)
+++ stable/8/lib/libarchive/archive_util.c	Sat Nov 13 06:07:39 2010	(r215233)
@@ -100,6 +100,11 @@ archive_error_string(struct archive *a)
 		return ("(Empty error message)");
 }
 
+int
+archive_file_count(struct archive *a)
+{
+	return (a->file_count);
+}
 
 int
 archive_format(struct archive *a)
@@ -182,9 +187,14 @@ void
 __archive_errx(int retvalue, const char *msg)
 {
 	static const char *msg1 = "Fatal Internal Error in libarchive: ";
-	write(2, msg1, strlen(msg1));
-	write(2, msg, strlen(msg));
-	write(2, "\n", 1);
+	size_t s;
+
+	s = write(2, msg1, strlen(msg1));
+	(void)s; /* UNUSED */
+	s = write(2, msg, strlen(msg));
+	(void)s; /* UNUSED */
+	s = write(2, "\n", 1);
+	(void)s; /* UNUSED */
 	exit(retvalue);
 }
 

Modified: stable/8/lib/libarchive/archive_virtual.c
==============================================================================
--- stable/8/lib/libarchive/archive_virtual.c	Sat Nov 13 06:00:27 2010	(r215232)
+++ stable/8/lib/libarchive/archive_virtual.c	Sat Nov 13 06:07:39 2010	(r215233)
@@ -66,6 +66,7 @@ archive_read_finish(struct archive *a)
 int
 archive_write_header(struct archive *a, struct archive_entry *entry)
 {
+	++a->file_count;
 	return ((a->vtable->archive_write_header)(a, entry));
 }
 


More information about the svn-src-all mailing list