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));
 }
 
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to