New archive_file_count() utility.
This commit is contained in:
parent
042c735c81
commit
9adedf9679
@ -224,6 +224,7 @@ MLINKS+= archive_util.3 archive_compression.3
|
|||||||
MLINKS+= archive_util.3 archive_compression_name.3
|
MLINKS+= archive_util.3 archive_compression_name.3
|
||||||
MLINKS+= archive_util.3 archive_errno.3
|
MLINKS+= archive_util.3 archive_errno.3
|
||||||
MLINKS+= archive_util.3 archive_error_string.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.3
|
||||||
MLINKS+= archive_util.3 archive_format_name.3
|
MLINKS+= archive_util.3 archive_format_name.3
|
||||||
MLINKS+= archive_util.3 archive_set_error.3
|
MLINKS+= archive_util.3 archive_set_error.3
|
||||||
|
@ -713,6 +713,7 @@ __LA_DECL void archive_set_error(struct archive *, int _err,
|
|||||||
const char *fmt, ...);
|
const char *fmt, ...);
|
||||||
__LA_DECL void archive_copy_error(struct archive *dest,
|
__LA_DECL void archive_copy_error(struct archive *dest,
|
||||||
struct archive *src);
|
struct archive *src);
|
||||||
|
__LA_DECL int archive_file_count(struct archive *);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
@ -25,6 +25,10 @@
|
|||||||
* $FreeBSD$
|
* $FreeBSD$
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#ifndef __LIBARCHIVE_BUILD
|
||||||
|
#error This header is only to be used internally to libarchive.
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifndef ARCHIVE_PRIVATE_H_INCLUDED
|
#ifndef ARCHIVE_PRIVATE_H_INCLUDED
|
||||||
#define ARCHIVE_PRIVATE_H_INCLUDED
|
#define ARCHIVE_PRIVATE_H_INCLUDED
|
||||||
|
|
||||||
@ -87,9 +91,11 @@ struct archive {
|
|||||||
const char *compression_name;
|
const char *compression_name;
|
||||||
|
|
||||||
/* Position in UNCOMPRESSED data stream. */
|
/* Position in UNCOMPRESSED data stream. */
|
||||||
off_t file_position;
|
int64_t file_position;
|
||||||
/* Position in COMPRESSED data stream. */
|
/* 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;
|
int archive_error_number;
|
||||||
const char *error;
|
const char *error;
|
||||||
@ -107,4 +113,12 @@ int __archive_parse_options(const char *p, const char *fn,
|
|||||||
|
|
||||||
#define err_combine(a,b) ((a) < (b) ? (a) : (b))
|
#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
|
#endif
|
||||||
|
@ -386,6 +386,7 @@ archive_read_next_header2(struct archive *_a, struct archive_entry *entry)
|
|||||||
ARCHIVE_STATE_HEADER | ARCHIVE_STATE_DATA,
|
ARCHIVE_STATE_HEADER | ARCHIVE_STATE_DATA,
|
||||||
"archive_read_next_header");
|
"archive_read_next_header");
|
||||||
|
|
||||||
|
++_a->file_count;
|
||||||
archive_entry_clear(entry);
|
archive_entry_clear(entry);
|
||||||
archive_clear_error(&a->archive);
|
archive_clear_error(&a->archive);
|
||||||
|
|
||||||
|
@ -34,6 +34,7 @@
|
|||||||
.Nm archive_copy_error ,
|
.Nm archive_copy_error ,
|
||||||
.Nm archive_errno ,
|
.Nm archive_errno ,
|
||||||
.Nm archive_error_string ,
|
.Nm archive_error_string ,
|
||||||
|
.Nm archive_file_count ,
|
||||||
.Nm archive_format ,
|
.Nm archive_format ,
|
||||||
.Nm archive_format_name ,
|
.Nm archive_format_name ,
|
||||||
.Nm archive_set_error
|
.Nm archive_set_error
|
||||||
@ -53,6 +54,8 @@
|
|||||||
.Ft const char *
|
.Ft const char *
|
||||||
.Fn archive_error_string "struct archive *"
|
.Fn archive_error_string "struct archive *"
|
||||||
.Ft int
|
.Ft int
|
||||||
|
.Fn archive_file_count "struct archive *"
|
||||||
|
.Ft int
|
||||||
.Fn archive_format "struct archive *"
|
.Fn archive_format "struct archive *"
|
||||||
.Ft const char *
|
.Ft const char *
|
||||||
.Fn archive_format_name "struct archive *"
|
.Fn archive_format_name "struct archive *"
|
||||||
@ -92,6 +95,12 @@ obtained from passing the result of
|
|||||||
.Fn archive_errno
|
.Fn archive_errno
|
||||||
to
|
to
|
||||||
.Xr strerror 3 .
|
.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
|
.It Fn archive_format
|
||||||
Returns a numeric code indicating the format of the current
|
Returns a numeric code indicating the format of the current
|
||||||
archive entry.
|
archive entry.
|
||||||
|
@ -100,6 +100,11 @@ archive_error_string(struct archive *a)
|
|||||||
return ("(Empty error message)");
|
return ("(Empty error message)");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
archive_file_count(struct archive *a)
|
||||||
|
{
|
||||||
|
return (a->file_count);
|
||||||
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
archive_format(struct archive *a)
|
archive_format(struct archive *a)
|
||||||
@ -182,9 +187,14 @@ void
|
|||||||
__archive_errx(int retvalue, const char *msg)
|
__archive_errx(int retvalue, const char *msg)
|
||||||
{
|
{
|
||||||
static const char *msg1 = "Fatal Internal Error in libarchive: ";
|
static const char *msg1 = "Fatal Internal Error in libarchive: ";
|
||||||
write(2, msg1, strlen(msg1));
|
size_t s;
|
||||||
write(2, msg, strlen(msg));
|
|
||||||
write(2, "\n", 1);
|
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);
|
exit(retvalue);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -66,6 +66,7 @@ archive_read_finish(struct archive *a)
|
|||||||
int
|
int
|
||||||
archive_write_header(struct archive *a, struct archive_entry *entry)
|
archive_write_header(struct archive *a, struct archive_entry *entry)
|
||||||
{
|
{
|
||||||
|
++a->file_count;
|
||||||
return ((a->vtable->archive_write_header)(a, entry));
|
return ((a->vtable->archive_write_header)(a, entry));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user