aboutsummaryrefslogtreecommitdiffstats
path: root/libarchive
diff options
context:
space:
mode:
authorMartin Matuska <mm@FreeBSD.org>2019-09-26 01:42:09 +0000
committerMartin Matuska <mm@FreeBSD.org>2019-09-26 01:42:09 +0000
commita297901e6c90d415ac49c88002dd4e02dc49e32b (patch)
treed717949fae352e99fdd30d0cee7a2f09cbe11595 /libarchive
parent085fce401bac81381be296026985e704e94a99e2 (diff)
downloadsrc-a297901e6c90d415ac49c88002dd4e02dc49e32b.tar.gz
src-a297901e6c90d415ac49c88002dd4e02dc49e32b.zip
Update vendor/libarchive/dist to git 2f3033ca23f8c21160506c3c7ac8a0df0d3fde42
Relevant vendor changes: Issue #1237: Fix integer overflow in archive_read_support_filter_lz4.c PR #1249: Correct some typographical and grammatical errors. PR #1250: Minor corrections to the formatting of manual pages
Notes
Notes: svn path=/vendor/libarchive/dist/; revision=352731
Diffstat (limited to 'libarchive')
-rw-r--r--libarchive/archive.h2
-rw-r--r--libarchive/archive_entry.37
-rw-r--r--libarchive/archive_entry_acl.359
-rw-r--r--libarchive/archive_entry_misc.35
-rw-r--r--libarchive/archive_entry_paths.310
-rw-r--r--libarchive/archive_entry_perms.312
-rw-r--r--libarchive/archive_entry_stat.36
-rw-r--r--libarchive/archive_entry_time.36
-rw-r--r--libarchive/archive_read.36
-rw-r--r--libarchive/archive_read_add_passphrase.310
-rw-r--r--libarchive/archive_read_data.34
-rw-r--r--libarchive/archive_read_disk.313
-rw-r--r--libarchive/archive_read_extract.32
-rw-r--r--libarchive/archive_read_filter.34
-rw-r--r--libarchive/archive_read_format.36
-rw-r--r--libarchive/archive_read_free.36
-rw-r--r--libarchive/archive_read_header.32
-rw-r--r--libarchive/archive_read_new.32
-rw-r--r--libarchive/archive_read_open.34
-rw-r--r--libarchive/archive_read_set_options.37
-rw-r--r--libarchive/archive_read_support_filter_gzip.c54
-rw-r--r--libarchive/archive_read_support_filter_lz4.c10
-rw-r--r--libarchive/archive_read_support_format_zip.c6
-rw-r--r--libarchive/archive_string.c6
-rw-r--r--libarchive/archive_util.316
-rw-r--r--libarchive/archive_write.36
-rw-r--r--libarchive/archive_write_blocksize.32
-rw-r--r--libarchive/archive_write_data.32
-rw-r--r--libarchive/archive_write_disk.35
-rw-r--r--libarchive/archive_write_disk_posix.c2
-rw-r--r--libarchive/archive_write_filter.34
-rw-r--r--libarchive/archive_write_finish_entry.32
-rw-r--r--libarchive/archive_write_format.34
-rw-r--r--libarchive/archive_write_free.34
-rw-r--r--libarchive/archive_write_header.32
-rw-r--r--libarchive/archive_write_new.32
-rw-r--r--libarchive/archive_write_open.34
-rw-r--r--libarchive/archive_write_set_format_iso9660.c6
-rw-r--r--libarchive/archive_write_set_format_mtree.c16
-rw-r--r--libarchive/archive_write_set_options.362
-rw-r--r--libarchive/archive_write_set_passphrase.312
-rw-r--r--libarchive/libarchive_changes.35
-rw-r--r--libarchive/libarchive_internals.34
-rw-r--r--libarchive/mtree.57
-rw-r--r--libarchive/tar.59
-rw-r--r--libarchive/test/test_archive_write_add_filter_by_name.c4
-rw-r--r--libarchive/test/test_archive_write_set_format_filter_by_ext.c2
-rw-r--r--libarchive/test/test_read_format_raw.c4
-rw-r--r--libarchive/test/test_read_format_zip.c8
-rw-r--r--libarchive/test/test_read_format_zip_traditional_encryption_data.c4
-rw-r--r--libarchive/test/test_write_filter_zstd.c66
51 files changed, 316 insertions, 197 deletions
diff --git a/libarchive/archive.h b/libarchive/archive.h
index 7b196e7bb9ea..263d5ea354c9 100644
--- a/libarchive/archive.h
+++ b/libarchive/archive.h
@@ -52,7 +52,7 @@
*/
#if defined(__BORLANDC__) && __BORLANDC__ >= 0x560
# include <stdint.h>
-#elif !defined(__WATCOMC__) && !defined(_MSC_VER) && !defined(__INTERIX) && !defined(__BORLANDC__) && !defined(_SCO_DS) && !defined(__osf__)
+#elif !defined(__WATCOMC__) && !defined(_MSC_VER) && !defined(__INTERIX) && !defined(__BORLANDC__) && !defined(_SCO_DS) && !defined(__osf__) && !defined(__CLANG_INTTYPES_H)
# include <inttypes.h>
#endif
diff --git a/libarchive/archive_entry.3 b/libarchive/archive_entry.3
index f75916c9e41b..2f62a4be233e 100644
--- a/libarchive/archive_entry.3
+++ b/libarchive/archive_entry.3
@@ -32,7 +32,7 @@
.Nm archive_entry_clear ,
.Nm archive_entry_clone ,
.Nm archive_entry_free ,
-.Nm archive_entry_new ,
+.Nm archive_entry_new
.Nd functions for managing archive entry descriptions
.Sh LIBRARY
Streaming Archive Library (libarchive, -larchive)
@@ -126,7 +126,6 @@ using the current locale.
Similarly, if you store a wide string and then store a
narrow string for the same data, the previously-set wide string will
be discarded in favor of the new data.
-.Pp
.\" .Sh EXAMPLE
.\" .Sh RETURN VALUES
.\" .Sh ERRORS
@@ -134,8 +133,8 @@ be discarded in favor of the new data.
.Xr archive_entry_acl 3 ,
.Xr archive_entry_paths 3 ,
.Xr archive_entry_perms 3 ,
-.Xr archive_entry_time 3
-.Xr libarchive 3 ,
+.Xr archive_entry_time 3 ,
+.Xr libarchive 3
.Sh HISTORY
The
.Nm libarchive
diff --git a/libarchive/archive_entry_acl.3 b/libarchive/archive_entry_acl.3
index 534dbfac6ef6..7dcc5854ce10 100644
--- a/libarchive/archive_entry_acl.3
+++ b/libarchive/archive_entry_acl.3
@@ -118,15 +118,16 @@ Streaming Archive Library (libarchive, -larchive)
.Sh DESCRIPTION
The
.Dq Access Control Lists (ACLs)
-extend the standard Unix perssion model.
+extend the standard Unix permission model.
The ACL interface of
.Nm libarchive
-supports both POSIX.1e and NFSv4 style ACLs. Use of ACLs is restricted by
+supports both POSIX.1e and NFSv4 style ACLs.
+Use of ACLs is restricted by
various levels of ACL support in operating systems, file systems and archive
formats.
.Ss POSIX.1e Access Control Lists
A POSIX.1e ACL consists of a number of independent entries.
-Each entry specifies the permission set as bitmask of basic permissions.
+Each entry specifies the permission set as a bitmask of basic permissions.
Valid permissions in the
.Fa permset
are:
@@ -147,13 +148,13 @@ The user specified by the name field.
.It Dv ARCHIVE_ENTRY_ACL_USER_OBJ
The owner of the file.
.It Dv ARCHIVE_ENTRY_ACL_GROUP
-The group specied by the name field.
+The group specified by the name field.
.It Dv ARCHIVE_ENTRY_ACL_GROUP_OBJ
-The group who owns the file.
+The group which owns the file.
.It Dv ARCHIVE_ENTRY_ACL_MASK
The maximum permissions to be obtained via group permissions.
.It Dv ARCHIVE_ENTRY_ACL_OTHER
-Any principal who is not file owner or a member of the owning group.
+Any principal who is not the file owner or a member of the owning group.
.El
.Pp
The principals
@@ -164,12 +165,12 @@ and
are equivalent to user, group and other in the classic Unix permission
model and specify non-extended ACL entries.
.Pp
-All files with have an access ACL
+All files have an access ACL
.Pq Dv ARCHIVE_ENTRY_ACL_TYPE_ACCESS .
This specifies the permissions required for access to the file itself.
Directories have an additional ACL
.Pq Dv ARCHIVE_ENTRY_ACL_TYPE_DEFAULT ,
-which controls the initial access ACL for newly created directory entries.
+which controls the initial access ACL for newly-created directory entries.
.Ss NFSv4 Access Control Lists
A NFSv4 ACL consists of multiple individual entries called Access Control
Entries (ACEs).
@@ -197,11 +198,11 @@ The user specified by the name field.
.It Dv ARCHIVE_ENTRY_ACL_USER_OBJ
The owner of the file.
.It Dv ARCHIVE_ENTRY_ACL_GROUP
-The group specied by the name field.
+The group specified by the name field.
.It Dv ARCHIVE_ENTRY_ACL_GROUP_OBJ
-The group who owns the file.
+The group which owns the file.
.It Dv ARCHIVE_ENTRY_ACL_EVERYONE
-Any principal who is not file owner or a member of the owning group.
+Any principal who is not the file owner or a member of the owning group.
.El
.Pp
Entries with the
@@ -216,9 +217,10 @@ integer.
.Pp
NFSv4 ACE permissions and flags are stored in the same
.Fa permset
-bitfield. Some permissions share the same constant and permission character but
-have different effect on directories than on files. The following ACE
-permissions are supported:
+bitfield.
+Some permissions share the same constant and permission character
+but have different effect on directories than on files.
+The following ACE permissions are supported:
.Bl -tag -offset indent -compact -width ARCHIV
.It Dv ARCHIVE_ENTRY_ACL_READ_DATA ( Sy r )
Read data (file).
@@ -265,7 +267,8 @@ Inherit parent directory ACE to subdirectories.
.It Dv ARCHIVE_ENTRY_ACL_ENTRY_INHERIT_ONLY ( Sy i )
Only inherit, do not apply the permission on the directory itself.
.It Dv ARCHIVE_ENTRY_ACL_ENTRY_NO_PROPAGATE_INHERIT ( Sy n )
-Do not propagate inherit flags. Only first-level entries inherit ACLs.
+Do not propagate inherit flags.
+Only first-level entries inherit ACLs.
.It Dv ARCHIVE_ENTRY_ACL_ENTRY_SUCCESSFUL_ACCESS ( Sy S )
Trigger alarm or audit on successful access.
.It Dv ARCHIVE_ENTRY_ACL_ENTRY_FAILED_ACCESS ( Sy F )
@@ -279,8 +282,8 @@ and
.Fn archive_entry_acl_add_entry_w
add a single ACL entry.
For the access ACL and non-extended principals, the classic Unix permissions
-are updated. An archive entry cannot contain both POSIX.1e and NFSv4 ACL
-entries.
+are updated.
+An archive entry cannot contain both POSIX.1e and NFSv4 ACL entries.
.Pp
.Fn archive_entry_acl_clear
removes all ACL entries and resets the enumeration pointer.
@@ -300,7 +303,8 @@ for POSIX.1e ACLs and
.It Dv ARCHIVE_ENTRY_ACL_TYPE_AUDIT
.It Dv ARCHIVE_ENTRY_ACL_TYPE_ALARM
.El
-for NFSv4 ACLs. For POSIX.1e ACLs if
+for NFSv4 ACLs.
+For POSIX.1e ACLs if
.Dv ARCHIVE_ENTRY_ACL_TYPE_ACCESS
is included and at least one extended ACL entry is found,
the three non-extended ACLs are added.
@@ -312,7 +316,8 @@ add new
.Pq or merge with existing
ACL entries from
.Pq wide
-text. The argument
+text.
+The argument
.Fa type
may take one of the following values:
.Bl -tag -offset indent -compact -width "ARCHIVE_ENTRY_ACL_TYPE_DEFAULT"
@@ -322,11 +327,13 @@ may take one of the following values:
.El
Supports all formats that can be created with
.Fn archive_entry_acl_to_text
-or respective
+or respectively
.Fn archive_entry_acl_to_text_w .
-Existing ACL entries are preserved. To get a clean new ACL from text
+Existing ACL entries are preserved.
+To get a clean new ACL from text
.Fn archive_entry_acl_clear
-must be called first. Entries prefixed with
+must be called first.
+Entries prefixed with
.Dq default:
are treated as
.Dv ARCHIVE_ENTRY_ACL_TYPE_DEFAULT
@@ -354,7 +361,7 @@ prepare reading the list of ACL entries with
.Fn archive_entry_acl_next
or
.Fn archive_entry_acl_next_w .
-The function returns either 0, if no non-extended ACLs are found.
+The function returns 0 if no non-extended ACLs are found.
In this case, the access permissions should be obtained by
.Xr archive_entry_mode 3
or set using
@@ -367,7 +374,8 @@ and
.Fn archive_entry_acl_to_text_w
convert the ACL entries for the given type into a
.Pq wide
-string of ACL entries separated by newline. If the pointer
+string of ACL entries separated by newline.
+If the pointer
.Fa len_p
is not NULL, then the function shall return the length of the string
.Pq not including the NULL terminator
@@ -415,7 +423,8 @@ are prefixed with
.Dq default: .
.Pp
.Fn archive_entry_acl_types
-get ACL entry types contained in an archive entry's ACL. As POSIX.1e and NFSv4
+get ACL entry types contained in an archive entry's ACL.
+As POSIX.1e and NFSv4
ACL entries cannot be mixed, this function is a very efficient way to detect if
an ACL already contains POSIX.1e or NFSv4 ACL entries.
.Sh RETURN VALUES
diff --git a/libarchive/archive_entry_misc.3 b/libarchive/archive_entry_misc.3
index 9b1e3ea207d3..dfab7ddb559b 100644
--- a/libarchive/archive_entry_misc.3
+++ b/libarchive/archive_entry_misc.3
@@ -28,7 +28,7 @@
.Sh NAME
.Nm archive_entry_symlink_type ,
.Nm archive_entry_set_symlink_type
-.Nd miscellaneous functions for manipulating properties of archive_entry.
+.Nd miscellaneous functions for manipulating properties of archive_entry
.Sh LIBRARY
Streaming Archive Library (libarchive, -larchive)
.Sh SYNOPSIS
@@ -42,7 +42,8 @@ The function
.Fn archive_entry_symlink_type
returns and the function
.Fn archive_entry_set_symlink_type
-sets the type of the symbolic link stored in an archive entry. These functions
+sets the type of the symbolic link stored in an archive entry.
+These functions
have special meaning on operating systems that support multiple symbolic link
types (e.g. Microsoft Windows).
.Pp
diff --git a/libarchive/archive_entry_paths.3 b/libarchive/archive_entry_paths.3
index f647212a98be..0f849c9ebb35 100644
--- a/libarchive/archive_entry_paths.3
+++ b/libarchive/archive_entry_paths.3
@@ -133,7 +133,7 @@ The accessor functions are named
.Fn XXX_w .
.It UTF-8
Unicode strings encoded as UTF-8.
-This are convience functions to update both the multibyte and wide
+These are convenience functions to update both the multibyte and wide
character strings at the same time.
.El
.Pp
@@ -141,13 +141,13 @@ The sourcepath is a pure filesystem concept and never stored in an
archive directly.
.Pp
For that reason, it is only available as multibyte string.
-The link path is a convience function for conditionally setting
+The link path is a convenience function for conditionally setting
hardlink or symlink destination.
It doesn't have a corresponding get accessor function.
.Pp
.Fn archive_entry_set_XXX
-is an alias for
+is an alias for
.Fn archive_entry_copy_XXX .
.Sh SEE ALSO
-.Xr archive_entry 3
-.Xr libarchive 3 ,
+.Xr archive_entry 3 ,
+.Xr libarchive 3
diff --git a/libarchive/archive_entry_perms.3 b/libarchive/archive_entry_perms.3
index aae3648bb210..0291b7b4988b 100644
--- a/libarchive/archive_entry_perms.3
+++ b/libarchive/archive_entry_perms.3
@@ -126,7 +126,7 @@ The corresponding functions
and
.Fn archive_entry_set_perm
store the given user id, group id and permission in the entry.
-The permission is also set as side effect of calling
+The permission is also set as a side effect of calling
.Fn archive_entry_set_mode .
.Pp
.Fn archive_entry_strmode
@@ -143,12 +143,12 @@ The accessor functions are named
.Fn XXX_w .
.It UTF-8
Unicode strings encoded as UTF-8.
-This are convience functions to update both the multibyte and wide
+These are convenience functions to update both the multibyte and wide
character strings at the same time.
.El
.Pp
.Fn archive_entry_set_XXX
-is an alias for
+is an alias for
.Fn archive_entry_copy_XXX .
.Ss File Flags
File flags are transparently converted between a bitmap
@@ -182,7 +182,7 @@ The
.Fn archive_entry_copy_fflags_text
and
.Fn archive_entry_copy_fflags_text_w
-functions parse the provided text and sets the internal bitmap values.
+functions parse the provided text and set the internal bitmap values.
This is a platform-specific operation; names that are not meaningful
on the current platform will be ignored.
The function returns a pointer to the start of the first name that was not
@@ -197,8 +197,8 @@ which stops parsing at the first unrecognized name.)
.Xr archive_entry 3 ,
.Xr archive_entry_acl 3 ,
.Xr archive_read_disk 3 ,
-.Xr archive_write_disk 3
-.Xr libarchive 3 ,
+.Xr archive_write_disk 3 ,
+.Xr libarchive 3
.Sh BUGS
The platform types
.Vt uid_t
diff --git a/libarchive/archive_entry_stat.3 b/libarchive/archive_entry_stat.3
index 26611e4c62e9..aa5c8e03f9f9 100644
--- a/libarchive/archive_entry_stat.3
+++ b/libarchive/archive_entry_stat.3
@@ -54,7 +54,7 @@
.Nm archive_entry_rdevmajor ,
.Nm archive_entry_set_rdevmajor ,
.Nm archive_entry_rdevminor ,
-.Nm archive_entry_set_rdevminor ,
+.Nm archive_entry_set_rdevminor
.Nd accessor functions for manipulating archive entry descriptions
.Sh LIBRARY
Streaming Archive Library (libarchive, -larchive)
@@ -267,8 +267,8 @@ platforms.
Some archive formats use the combined form, while other formats use
the split form.
.Sh SEE ALSO
+.Xr stat 2 ,
.Xr archive_entry_acl 3 ,
.Xr archive_entry_perms 3 ,
.Xr archive_entry_time 3 ,
-.Xr libarchive 3 ,
-.Xr stat 2
+.Xr libarchive 3
diff --git a/libarchive/archive_entry_time.3 b/libarchive/archive_entry_time.3
index 186452159370..d0563eaef43a 100644
--- a/libarchive/archive_entry_time.3
+++ b/libarchive/archive_entry_time.3
@@ -48,7 +48,7 @@
.Nm archive_entry_mtime_nsec ,
.Nm archive_entry_mtime_is_set ,
.Nm archive_entry_set_mtime ,
-.Nm archive_entry_unset_mtime ,
+.Nm archive_entry_unset_mtime
.Nd functions for manipulating times in archive entry descriptions
.Sh LIBRARY
Streaming Archive Library (libarchive, -larchive)
@@ -113,8 +113,8 @@ The current state can be queried using
.Fn XXX_is_set .
Unset time fields have a second and nanosecond field of 0.
.Sh SEE ALSO
-.Xr archive_entry 3
-.Xr libarchive 3 ,
+.Xr archive_entry 3 ,
+.Xr libarchive 3
.Sh HISTORY
The
.Nm libarchive
diff --git a/libarchive/archive_read.3 b/libarchive/archive_read.3
index d37e7327cb5e..cbedd0a19129 100644
--- a/libarchive/archive_read.3
+++ b/libarchive/archive_read.3
@@ -155,7 +155,7 @@ to close the archive, then call
.Fn archive_read_free
to release all resources, including all memory allocated by the library.
.\"
-.Sh EXAMPLE
+.Sh EXAMPLES
The following illustrates basic usage of the library.
In this example,
the callback functions are simply wrappers around the standard
@@ -217,16 +217,16 @@ myclose(struct archive *a, void *client_data)
.\" .Sh ERRORS
.Sh SEE ALSO
.Xr tar 1 ,
-.Xr libarchive 3 ,
-.Xr archive_read_new 3 ,
.Xr archive_read_data 3 ,
.Xr archive_read_extract 3 ,
.Xr archive_read_filter 3 ,
.Xr archive_read_format 3 ,
.Xr archive_read_header 3 ,
+.Xr archive_read_new 3 ,
.Xr archive_read_open 3 ,
.Xr archive_read_set_options 3 ,
.Xr archive_util 3 ,
+.Xr libarchive 3 ,
.Xr tar 5
.Sh HISTORY
The
diff --git a/libarchive/archive_read_add_passphrase.3 b/libarchive/archive_read_add_passphrase.3
index 8b242ea79b1e..ca60d4fc62f7 100644
--- a/libarchive/archive_read_add_passphrase.3
+++ b/libarchive/archive_read_add_passphrase.3
@@ -59,16 +59,16 @@ or empty, this function will do nothing and
will be returned.
Otherwise,
.Cm ARCHIVE_OK
-will be returned.
+will be returned.
.It Fn archive_read_set_passphrase_callback
-Register callback function that will be invoked to get a passphrase
-for decrption after trying all passphrases registered by the
+Register a callback function that will be invoked to get a passphrase
+for decryption after trying all the passphrases registered by the
.Fn archive_read_add_passphrase
function failed.
.El
.\" .Sh ERRORS
.Sh SEE ALSO
.Xr tar 1 ,
-.Xr libarchive 3 ,
.Xr archive_read 3 ,
-.Xr archive_read_set_options 3
+.Xr archive_read_set_options 3 ,
+.Xr libarchive 3
diff --git a/libarchive/archive_read_data.3 b/libarchive/archive_read_data.3
index c1bc15d7cc8c..78c0c9000419 100644
--- a/libarchive/archive_read_data.3
+++ b/libarchive/archive_read_data.3
@@ -28,7 +28,7 @@
.Dt ARCHIVE_READ_DATA 3
.Os
.Sh NAME
-.Nm archive_read_data
+.Nm archive_read_data ,
.Nm archive_read_data_block ,
.Nm archive_read_data_skip ,
.Nm archive_read_data_into_fd
@@ -118,7 +118,6 @@ functions.
.\"
.Sh SEE ALSO
.Xr tar 1 ,
-.Xr libarchive 3 ,
.Xr archive_read 3 ,
.Xr archive_read_extract 3 ,
.Xr archive_read_filter 3 ,
@@ -127,4 +126,5 @@ functions.
.Xr archive_read_open 3 ,
.Xr archive_read_set_options 3 ,
.Xr archive_util 3 ,
+.Xr libarchive 3 ,
.Xr tar 5
diff --git a/libarchive/archive_read_disk.3 b/libarchive/archive_read_disk.3
index 027f63cb630f..82d6a5c8562c 100644
--- a/libarchive/archive_read_disk.3
+++ b/libarchive/archive_read_disk.3
@@ -99,9 +99,10 @@ following values:
.Bl -tag -compact -width "indent"
.It Cm ARCHIVE_READDISK_HONOR_NODUMP
Skip files and directories with the nodump file attribute (file flag) set.
-By default, the nodump file atrribute is ignored.
+By default, the nodump file attribute is ignored.
.It Cm ARCHIVE_READDISK_MAC_COPYFILE
-Mac OS X specific. Read metadata (ACLs and extended attributes) with
+Mac OS X specific.
+Read metadata (ACLs and extended attributes) with
.Xr copyfile 3 .
By default, metadata is read using
.Xr copyfile 3 .
@@ -120,7 +121,7 @@ or
for more information on file attributes.
.It Cm ARCHIVE_READDISK_NO_TRAVERSE_MOUNTS
Do not traverse mount points.
-By defaut, moint points are traversed.
+By default, mount points are traversed.
.It Cm ARCHIVE_READDISK_NO_XATTR
Do not read extended file attributes (xattrs).
By default, extended file attributes are read from disk.
@@ -216,7 +217,7 @@ of some other operation.
(For example, directory traversal libraries often provide this information.)
.Pp
Where necessary, user and group ids are converted to user and group names
-using the currently registered lookup functions above.
+using the currently-registered lookup functions above.
This affects the file ownership fields and ACL values in the
.Tn struct archive_entry
object.
@@ -226,7 +227,7 @@ More information about the
object and the overall design of the library can be found in the
.Xr libarchive 3
overview.
-.Sh EXAMPLE
+.Sh EXAMPLES
The following illustrates basic usage of the library by
showing how to use it to copy an item on disk into an archive.
.Bd -literal -offset indent
@@ -291,11 +292,11 @@ and
functions.
.\"
.Sh SEE ALSO
+.Xr tar 1 ,
.Xr archive_read 3 ,
.Xr archive_util 3 ,
.Xr archive_write 3 ,
.Xr archive_write_disk 3 ,
-.Xr tar 1 ,
.Xr libarchive 3
.Sh HISTORY
The
diff --git a/libarchive/archive_read_extract.3 b/libarchive/archive_read_extract.3
index 6ec0ced939b6..858f39742553 100644
--- a/libarchive/archive_read_extract.3
+++ b/libarchive/archive_read_extract.3
@@ -126,7 +126,6 @@ and
functions.
.Sh SEE ALSO
.Xr tar 1 ,
-.Xr libarchive 3 ,
.Xr archive_read 3 ,
.Xr archive_read_data 3 ,
.Xr archive_read_filter 3 ,
@@ -134,4 +133,5 @@ functions.
.Xr archive_read_open 3 ,
.Xr archive_read_set_options 3 ,
.Xr archive_util 3 ,
+.Xr libarchive 3 ,
.Xr tar 5
diff --git a/libarchive/archive_read_filter.3 b/libarchive/archive_read_filter.3
index ef0a70175332..1ba5fcbd6efd 100644
--- a/libarchive/archive_read_filter.3
+++ b/libarchive/archive_read_filter.3
@@ -147,8 +147,8 @@ and
functions.
.\"
.Sh SEE ALSO
-.Xr libarchive 3 ,
.Xr archive_read 3 ,
.Xr archive_read_data 3 ,
.Xr archive_read_format 3 ,
-.Xr archive_read_format 3
+.Xr archive_read_format 3 ,
+.Xr libarchive 3
diff --git a/libarchive/archive_read_format.3 b/libarchive/archive_read_format.3
index 91c5d2cfd4b6..f3804ce3796a 100644
--- a/libarchive/archive_read_format.3
+++ b/libarchive/archive_read_format.3
@@ -102,7 +102,7 @@ For example,
.Fn archive_read_support_format_tar
enables support for a variety of standard tar formats, old-style tar,
ustar, pax interchange format, and many common variants.
-.It Fn archive_read_support_format_all
+.It Fn archive_read_support_format_all
Enables support for all available formats except the
.Dq raw
format (see below).
@@ -125,7 +125,7 @@ it is not possible to accurately determine a format for
an empty file based purely on contents.
So empty files are treated by libarchive as a distinct
format.
-.It Fn archive_read_support_format_raw
+.It Fn archive_read_support_format_raw
The
.Dq raw
format handler allows libarchive to be used to read arbitrary data.
@@ -153,11 +153,11 @@ functions.
.\"
.Sh SEE ALSO
.Xr tar 1 ,
-.Xr libarchive 3 ,
.Xr archive_read_data 3 ,
.Xr archive_read_filter 3 ,
.Xr archive_read_set_options 3 ,
.Xr archive_util 3 ,
+.Xr libarchive 3 ,
.Xr tar 5
.Sh BUGS
Many traditional archiver programs treat
diff --git a/libarchive/archive_read_free.3 b/libarchive/archive_read_free.3
index 5b218225ba0e..8371c3a0c60c 100644
--- a/libarchive/archive_read_free.3
+++ b/libarchive/archive_read_free.3
@@ -83,11 +83,11 @@ and
functions.
.\"
.Sh SEE ALSO
-.Xr libarchive 3 ,
-.Xr archive_read_new 3 ,
.Xr archive_read_data 3 ,
.Xr archive_read_filter 3 ,
.Xr archive_read_format 3 ,
+.Xr archive_read_new 3 ,
.Xr archive_read_open 3 ,
.Xr archive_read_set_options 3 ,
-.Xr archive_util 3
+.Xr archive_util 3 ,
+.Xr libarchive 3
diff --git a/libarchive/archive_read_header.3 b/libarchive/archive_read_header.3
index 480a666ca395..1e97f3a27507 100644
--- a/libarchive/archive_read_header.3
+++ b/libarchive/archive_read_header.3
@@ -79,7 +79,6 @@ functions.
.\"
.Sh SEE ALSO
.Xr tar 1 ,
-.Xr libarchive 3 ,
.Xr archive_read 3 ,
.Xr archive_read_data 3 ,
.Xr archive_read_extract 3 ,
@@ -88,4 +87,5 @@ functions.
.Xr archive_read_open 3 ,
.Xr archive_read_set_options 3 ,
.Xr archive_util 3 ,
+.Xr libarchive 3 ,
.Xr tar 5
diff --git a/libarchive/archive_read_new.3 b/libarchive/archive_read_new.3
index 0c9d1a7fbb27..8bb6b848b06a 100644
--- a/libarchive/archive_read_new.3
+++ b/libarchive/archive_read_new.3
@@ -50,10 +50,10 @@ object can be found in the overview manual page for
.\" .Sh ERRORS
.Sh SEE ALSO
.Xr tar 1 ,
-.Xr libarchive 3 ,
.Xr archive_read_data 3 ,
.Xr archive_read_filter 3 ,
.Xr archive_read_format 3 ,
.Xr archive_read_set_options 3 ,
.Xr archive_util 3 ,
+.Xr libarchive 3 ,
.Xr tar 5
diff --git a/libarchive/archive_read_open.3 b/libarchive/archive_read_open.3
index 2278ebc330c3..f67677823bd0 100644
--- a/libarchive/archive_read_open.3
+++ b/libarchive/archive_read_open.3
@@ -205,7 +205,7 @@ On failure, the callback should invoke
.Fn archive_set_error
to register an error code and message and
return
-.Cm ARCHIVE_FATAL.
+.Cm ARCHIVE_FATAL .
.\" .Sh EXAMPLE
.\"
.Sh RETURN VALUES
@@ -223,11 +223,11 @@ functions.
.\"
.Sh SEE ALSO
.Xr tar 1 ,
-.Xr libarchive 3 ,
.Xr archive_read 3 ,
.Xr archive_read_data 3 ,
.Xr archive_read_filter 3 ,
.Xr archive_read_format 3 ,
.Xr archive_read_set_options 3 ,
.Xr archive_util 3 ,
+.Xr libarchive 3 ,
.Xr tar 5
diff --git a/libarchive/archive_read_set_options.3 b/libarchive/archive_read_set_options.3
index 1a251cefecd1..d23f028b0ce2 100644
--- a/libarchive/archive_read_set_options.3
+++ b/libarchive/archive_read_set_options.3
@@ -212,7 +212,8 @@ Use
to disable.
.It Cm read_concatenated_archives
Ignore zeroed blocks in the archive, which occurs when multiple tar archives
-have been concatenated together. Without this option, only the contents of
+have been concatenated together.
+Without this option, only the contents of
the first concatenated archive would be read.
.El
.El
@@ -226,6 +227,6 @@ functions.
.\"
.Sh SEE ALSO
.Xr tar 1 ,
-.Xr libarchive 3 ,
+.Xr archive_read 3 ,
.Xr archive_write_set_options 3 ,
-.Xr archive_read 3
+.Xr libarchive 3
diff --git a/libarchive/archive_read_support_filter_gzip.c b/libarchive/archive_read_support_filter_gzip.c
index 458b6f729164..9fa9e2b0ddb8 100644
--- a/libarchive/archive_read_support_filter_gzip.c
+++ b/libarchive/archive_read_support_filter_gzip.c
@@ -131,12 +131,20 @@ archive_read_support_filter_gzip(struct archive *_a)
*/
static ssize_t
peek_at_header(struct archive_read_filter *filter, int *pbits,
- struct private_data *state)
+#ifdef HAVE_ZLIB_H
+ struct private_data *state
+#else
+ void *state
+#endif
+ )
{
const unsigned char *p;
ssize_t avail, len;
int bits = 0;
int header_flags;
+#ifndef HAVE_ZLIB_H
+ (void)state; /* UNUSED */
+#endif
/* Start by looking at the first ten bytes of the header, which
* is all fixed layout. */
@@ -153,8 +161,10 @@ peek_at_header(struct archive_read_filter *filter, int *pbits,
bits += 3;
header_flags = p[3];
/* Bytes 4-7 are mod time in little endian. */
+#ifdef HAVE_ZLIB_H
if (state)
state->mtime = archive_le32dec(p + 4);
+#endif
/* Byte 8 is deflate flags. */
/* XXXX TODO: return deflate flags back to consume_header for use
in initializing the decompressor. */
@@ -171,7 +181,9 @@ peek_at_header(struct archive_read_filter *filter, int *pbits,
/* Null-terminated optional filename. */
if (header_flags & 8) {
+#ifdef HAVE_ZLIB_H
ssize_t file_start = len;
+#endif
do {
++len;
if (avail < len)
@@ -181,11 +193,13 @@ peek_at_header(struct archive_read_filter *filter, int *pbits,
return (0);
} while (p[len - 1] != 0);
+#ifdef HAVE_ZLIB_H
if (state) {
/* Reset the name in case of repeat header reads. */
free(state->name);
state->name = strdup((const char *)&p[file_start]);
}
+#endif
}
/* Null-terminated optional comment. */
@@ -236,24 +250,6 @@ gzip_bidder_bid(struct archive_read_filter_bidder *self,
return (0);
}
-static int
-gzip_read_header(struct archive_read_filter *self, struct archive_entry *entry)
-{
- struct private_data *state;
-
- state = (struct private_data *)self->data;
-
- /* A mtime of 0 is considered invalid/missing. */
- if (state->mtime != 0)
- archive_entry_set_mtime(entry, state->mtime, 0);
-
- /* If the name is available, extract it. */
- if (state->name)
- archive_entry_set_pathname(entry, state->name);
-
- return (ARCHIVE_OK);
-}
-
#ifndef HAVE_ZLIB_H
/*
@@ -277,6 +273,24 @@ gzip_bidder_init(struct archive_read_filter *self)
#else
+static int
+gzip_read_header(struct archive_read_filter *self, struct archive_entry *entry)
+{
+ struct private_data *state;
+
+ state = (struct private_data *)self->data;
+
+ /* A mtime of 0 is considered invalid/missing. */
+ if (state->mtime != 0)
+ archive_entry_set_mtime(entry, state->mtime, 0);
+
+ /* If the name is available, extract it. */
+ if (state->name)
+ archive_entry_set_pathname(entry, state->name);
+
+ return (ARCHIVE_OK);
+}
+
/*
* Initialize the filter object.
*/
@@ -306,7 +320,9 @@ gzip_bidder_init(struct archive_read_filter *self)
self->read = gzip_filter_read;
self->skip = NULL; /* not supported */
self->close = gzip_filter_close;
+#ifdef HAVE_ZLIB_H
self->read_header = gzip_read_header;
+#endif
state->in_stream = 0; /* We're not actually within a stream yet. */
diff --git a/libarchive/archive_read_support_filter_lz4.c b/libarchive/archive_read_support_filter_lz4.c
index 147f5027ff4d..43ee6c2b7266 100644
--- a/libarchive/archive_read_support_filter_lz4.c
+++ b/libarchive/archive_read_support_filter_lz4.c
@@ -460,7 +460,7 @@ lz4_filter_read_descriptor(struct archive_read_filter *self)
__archive_read_filter_consume(self->upstream, descriptor_bytes);
- /* Make sure we have an enough buffer for uncompressed data. */
+ /* Make sure we have a large enough buffer for uncompressed data. */
if (lz4_allocate_out_block(self) != ARCHIVE_OK)
return (ARCHIVE_FATAL);
if (state->flags.stream_checksum)
@@ -520,7 +520,7 @@ lz4_filter_read_data_block(struct archive_read_filter *self, const void **p)
if (read_buf == NULL)
goto truncated_error;
- /* Optional process, checking a block sum. */
+ /* Optional processing, checking a block sum. */
if (checksum_size) {
unsigned int chsum = __archive_xxhash.XXH32(
read_buf + 4, (int)compressed_size, 0);
@@ -640,7 +640,7 @@ lz4_filter_read_default_stream(struct archive_read_filter *self, const void **p)
if (ret == 0 && *p == NULL)
state->stage = SELECT_STREAM;
- /* Optional process, checking a stream sum. */
+ /* Optional processing, checking a stream sum. */
if (state->flags.stream_checksum) {
if (state->stage == SELECT_STREAM) {
unsigned int checksum;
@@ -660,7 +660,7 @@ lz4_filter_read_default_stream(struct archive_read_filter *self, const void **p)
if (checksum != checksum_stream) {
archive_set_error(&self->archive->archive,
ARCHIVE_ERRNO_MISC,
- "lz4 stream cheksum error");
+ "lz4 stream checksum error");
return (ARCHIVE_FATAL);
}
} else if (ret > 0)
@@ -674,7 +674,7 @@ static ssize_t
lz4_filter_read_legacy_stream(struct archive_read_filter *self, const void **p)
{
struct private_data *state = (struct private_data *)self->data;
- int compressed;
+ uint32_t compressed;
const char *read_buf;
ssize_t ret;
diff --git a/libarchive/archive_read_support_format_zip.c b/libarchive/archive_read_support_format_zip.c
index ab21e222f5af..9934bf1504dc 100644
--- a/libarchive/archive_read_support_format_zip.c
+++ b/libarchive/archive_read_support_format_zip.c
@@ -487,7 +487,7 @@ process_extra(struct archive_read *a, struct archive_entry *entry,
/* Some ZIP files may have trailing 0 bytes. Let's check they
* are all 0 and ignore them instead of returning an error.
*
- * This is not techincally correct, but some ZIP files look
+ * This is not technically correct, but some ZIP files look
* like this and other tools support those files - so let's
* also support them.
*/
@@ -1053,7 +1053,7 @@ zip_read_local_file_header(struct archive_read *a, struct archive_entry *entry,
/* Make sure that entries with a trailing '/' are marked as directories
* even if the External File Attributes contains bogus values. If this
- * is not a directory and there is no type, assume regularfile. */
+ * is not a directory and there is no type, assume a regular file. */
if ((zip_entry->mode & AE_IFMT) != AE_IFDIR) {
int has_slash;
@@ -1104,7 +1104,7 @@ zip_read_local_file_header(struct archive_read *a, struct archive_entry *entry,
}
if (zip_entry->flags & LA_FROM_CENTRAL_DIRECTORY) {
- /* If this came from the central dir, it's size info
+ /* If this came from the central dir, its size info
* is definitive, so ignore the length-at-end flag. */
zip_entry->zip_flags &= ~ZIP_LENGTH_AT_END;
/* If local header is missing a value, use the one from
diff --git a/libarchive/archive_string.c b/libarchive/archive_string.c
index 76a1624043f8..979a418b6779 100644
--- a/libarchive/archive_string.c
+++ b/libarchive/archive_string.c
@@ -458,7 +458,7 @@ archive_wstring_append_from_mbs_in_codepage(struct archive_wstring *dest,
if (from_cp == CP_C_LOCALE) {
/*
- * "C" locale special process.
+ * "C" locale special processing.
*/
wchar_t *ws;
const unsigned char *mp;
@@ -680,7 +680,7 @@ archive_string_append_from_wcs_in_codepage(struct archive_string *as,
if (to_cp == CP_C_LOCALE) {
/*
- * "C" locale special process.
+ * "C" locale special processing.
*/
const wchar_t *wp = ws;
char *p;
@@ -889,7 +889,7 @@ add_converter(struct archive_string_conv *sc, int (*converter)
struct archive_string_conv *))
{
if (sc == NULL || sc->nconverter >= 2)
- __archive_errx(1, "Programing error");
+ __archive_errx(1, "Programming error");
sc->converter[sc->nconverter++] = converter;
}
diff --git a/libarchive/archive_util.3 b/libarchive/archive_util.3
index 99ab842a28ca..d5d4e7dfd7d5 100644
--- a/libarchive/archive_util.3
+++ b/libarchive/archive_util.3
@@ -92,10 +92,10 @@ Clears any error information left over from a previous call.
Not generally used in client code.
.It Fn archive_compression
Synonym for
-.Fn archive_filter_code(a, 0) .
+.Fn archive_filter_code a 0 .
.It Fn archive_compression_name
Synonym for
-.Fn archive_filter_name(a, 0) .
+.Fn archive_filter_name a 0 .
.It Fn archive_copy_error
Copies error information from one archive to another.
.It Fn archive_errno
@@ -142,13 +142,13 @@ filter 0 is the gunzip filter,
filter 1 is the uudecode filter,
and filter 2 is the pseudo-filter that wraps the archive read functions.
In this case, requesting
-.Fn archive_position(a, -1)
+.Fn archive_position a -1
would be a synonym for
-.Fn archive_position(a, 2)
+.Fn archive_position a 2
which would return the number of bytes currently read from the archive, while
-.Fn archive_position(a, 1)
+.Fn archive_position a 1
would return the number of bytes after uudecoding, and
-.Fn archive_position(a, 0)
+.Fn archive_position a 0
would return the number of bytes after decompression.
.It Fn archive_filter_name
Returns a textual name identifying the indicated filter.
@@ -170,9 +170,9 @@ A textual description of the format of the current entry.
.It Fn archive_position
Returns the number of bytes read from or written to the indicated filter.
In particular,
-.Fn archive_position(a, 0)
+.Fn archive_position a 0
returns the number of bytes read or written by the format handler, while
-.Fn archive_position(a, -1)
+.Fn archive_position a -1
returns the number of bytes read or written to the archive.
See
.Fn archive_filter_count
diff --git a/libarchive/archive_write.3 b/libarchive/archive_write.3
index c1164f5b5fdb..e7f7f1384ee8 100644
--- a/libarchive/archive_write.3
+++ b/libarchive/archive_write.3
@@ -118,7 +118,7 @@ After all entries have been written, use the
.Fn archive_write_free
function to release all resources.
.\"
-.Sh EXAMPLE
+.Sh EXAMPLES
The following sketch illustrates basic usage of the library.
In this example,
the callback functions are simply wrappers around the standard
@@ -192,7 +192,7 @@ write_archive(const char *outname, const char **filename)
if (archive_write_set_format_filter_by_ext(a, outname) != ARCHIVE_OK) {
archive_write_add_filter_gzip(a);
archive_write_set_format_ustar(a);
- }
+ }
archive_write_open(a, mydata, myopen, mywrite, myclose);
while (*filename) {
stat(*filename, &st);
@@ -225,8 +225,8 @@ int main(int argc, const char **argv)
.Ed
.Sh SEE ALSO
.Xr tar 1 ,
-.Xr libarchive 3 ,
.Xr archive_write_set_options 3 ,
+.Xr libarchive 3 ,
.Xr cpio 5 ,
.Xr mtree 5 ,
.Xr tar 5
diff --git a/libarchive/archive_write_blocksize.3 b/libarchive/archive_write_blocksize.3
index afd84ea4d393..4973f9990566 100644
--- a/libarchive/archive_write_blocksize.3
+++ b/libarchive/archive_write_blocksize.3
@@ -107,8 +107,8 @@ functions.
.\"
.Sh SEE ALSO
.Xr tar 1 ,
-.Xr libarchive 3 ,
.Xr archive_write_set_options 3 ,
+.Xr libarchive 3 ,
.Xr cpio 5 ,
.Xr mtree 5 ,
.Xr tar 5
diff --git a/libarchive/archive_write_data.3 b/libarchive/archive_write_data.3
index 9c16cd9b4f70..bc208b45d53a 100644
--- a/libarchive/archive_write_data.3
+++ b/libarchive/archive_write_data.3
@@ -82,9 +82,9 @@ and consider any non-negative value as success.
.\"
.Sh SEE ALSO
.Xr tar 1 ,
-.Xr libarchive 3 ,
.Xr archive_write_finish_entry 3 ,
.Xr archive_write_set_options 3 ,
+.Xr libarchive 3 ,
.Xr cpio 5 ,
.Xr mtree 5 ,
.Xr tar 5
diff --git a/libarchive/archive_write_disk.3 b/libarchive/archive_write_disk.3
index 949c9ef106f2..ff8e1a36a75c 100644
--- a/libarchive/archive_write_disk.3
+++ b/libarchive/archive_write_disk.3
@@ -113,7 +113,8 @@ or
.Pq FreeBSD, Mac OS X
for more information on file attributes.
.It Cm ARCHIVE_EXTRACT_MAC_METADATA
-Mac OS X specific. Restore metadata using
+Mac OS X specific.
+Restore metadata using
.Xr copyfile 3 .
By default,
.Xr copyfile 3
@@ -264,9 +265,9 @@ and
functions.
.\"
.Sh SEE ALSO
+.Xr tar 1 ,
.Xr archive_read 3 ,
.Xr archive_write 3 ,
-.Xr tar 1 ,
.Xr libarchive 3
.Sh HISTORY
The
diff --git a/libarchive/archive_write_disk_posix.c b/libarchive/archive_write_disk_posix.c
index 283f3e787678..6ae8a6a89bbf 100644
--- a/libarchive/archive_write_disk_posix.c
+++ b/libarchive/archive_write_disk_posix.c
@@ -431,7 +431,7 @@ la_opendirat(int fd, const char *path) {
errno = ENOTSUP;
return (-1);
} else
- return (open(fd, path, flags));
+ return (open(path, flags));
#else
return (openat(fd, path, flags));
#endif
diff --git a/libarchive/archive_write_filter.3 b/libarchive/archive_write_filter.3
index d6fa07131a80..c83eb77b6a5e 100644
--- a/libarchive/archive_write_filter.3
+++ b/libarchive/archive_write_filter.3
@@ -43,7 +43,7 @@
.Nm archive_write_add_filter_program ,
.Nm archive_write_add_filter_uuencode ,
.Nm archive_write_add_filter_xz ,
-.Nm archive_write_add_filter_zstd ,
+.Nm archive_write_add_filter_zstd
.Nd functions enabling output filters
.Sh LIBRARY
Streaming Archive Library (libarchive, -larchive)
@@ -125,10 +125,10 @@ functions.
.\"
.Sh SEE ALSO
.Xr tar 1 ,
-.Xr libarchive 3 ,
.Xr archive_write 3 ,
.Xr archive_write_format 3 ,
.Xr archive_write_set_options 3 ,
+.Xr libarchive 3 ,
.Xr cpio 5 ,
.Xr mtree 5 ,
.Xr tar 5
diff --git a/libarchive/archive_write_finish_entry.3 b/libarchive/archive_write_finish_entry.3
index dc1b94b82a5c..5797e16a6dbc 100644
--- a/libarchive/archive_write_finish_entry.3
+++ b/libarchive/archive_write_finish_entry.3
@@ -71,9 +71,9 @@ functions.
.\"
.Sh SEE ALSO
.Xr tar 1 ,
-.Xr libarchive 3 ,
.Xr archive_write_data 3 ,
.Xr archive_write_set_options 3 ,
+.Xr libarchive 3 ,
.Xr cpio 5 ,
.Xr mtree 5 ,
.Xr tar 5
diff --git a/libarchive/archive_write_format.3 b/libarchive/archive_write_format.3
index aaafb0a8617c..47a740339622 100644
--- a/libarchive/archive_write_format.3
+++ b/libarchive/archive_write_format.3
@@ -52,7 +52,7 @@
.Nm archive_write_set_format_v7tar ,
.Nm archive_write_set_format_warc ,
.Nm archive_write_set_format_xar ,
-.Nm archive_write_set_format_zip ,
+.Nm archive_write_set_format_zip
.Nd functions for creating archives
.Sh LIBRARY
Streaming Archive Library (libarchive, -larchive)
@@ -166,9 +166,9 @@ functions.
.\"
.Sh SEE ALSO
.Xr tar 1 ,
-.Xr libarchive 3 ,
.Xr archive_write 3 ,
.Xr archive_write_set_options 3 ,
+.Xr libarchive 3 ,
.Xr cpio 5 ,
.Xr libarchive-formats 5 ,
.Xr mtree 5 ,
diff --git a/libarchive/archive_write_free.3 b/libarchive/archive_write_free.3
index 1b2d07131d8e..5210e2a633de 100644
--- a/libarchive/archive_write_free.3
+++ b/libarchive/archive_write_free.3
@@ -56,7 +56,7 @@ after calling this function, the only call that can succeed is
to release the resources.
This can be used to speed recovery when the archive creation
must be aborted.
-Note that the created archive is likely to be malformed in this case;
+Note that the created archive is likely to be malformed in this case;
.It Fn archive_write_close
Complete the archive and invoke the close callback.
.It Fn archive_write_finish
@@ -89,8 +89,8 @@ functions.
.\"
.Sh SEE ALSO
.Xr tar 1 ,
-.Xr libarchive 3 ,
.Xr archive_write_set_options 3 ,
+.Xr libarchive 3 ,
.Xr cpio 5 ,
.Xr mtree 5 ,
.Xr tar 5
diff --git a/libarchive/archive_write_header.3 b/libarchive/archive_write_header.3
index 4de58f3b9f37..2217b1871bba 100644
--- a/libarchive/archive_write_header.3
+++ b/libarchive/archive_write_header.3
@@ -66,8 +66,8 @@ functions.
.\"
.Sh SEE ALSO
.Xr tar 1 ,
-.Xr libarchive 3 ,
.Xr archive_write_set_options 3 ,
+.Xr libarchive 3 ,
.Xr cpio 5 ,
.Xr mtree 5 ,
.Xr tar 5
diff --git a/libarchive/archive_write_new.3 b/libarchive/archive_write_new.3
index f05d269d3e8d..788cbb855985 100644
--- a/libarchive/archive_write_new.3
+++ b/libarchive/archive_write_new.3
@@ -50,9 +50,9 @@ object can be found in the overview manual page for
.\" .Sh ERRORS
.Sh SEE ALSO
.Xr tar 1 ,
-.Xr libarchive 3 ,
.Xr archive_write 3 ,
.Xr archive_write_set_options 3 ,
+.Xr libarchive 3 ,
.Xr cpio 5 ,
.Xr mtree 5 ,
.Xr tar 5
diff --git a/libarchive/archive_write_open.3 b/libarchive/archive_write_open.3
index 457873e61483..0129d10b7f2d 100644
--- a/libarchive/archive_write_open.3
+++ b/libarchive/archive_write_open.3
@@ -200,7 +200,7 @@ On failure, the callback should invoke
.Fn archive_set_error
to register an error code and message and
return
-.Cm ARCHIVE_FATAL.
+.Cm ARCHIVE_FATAL .
.Pp
Note that if the client-provided write callback function
returns a non-zero value, that error will be propagated back to the caller
@@ -234,13 +234,13 @@ functions.
.\"
.Sh SEE ALSO
.Xr tar 1 ,
-.Xr libarchive 3 ,
.Xr archive_write 3 ,
.Xr archive_write_blocksize 3 ,
.Xr archive_write_filter 3 ,
.Xr archive_write_format 3 ,
.Xr archive_write_new 3 ,
.Xr archive_write_set_options 3 ,
+.Xr libarchive 3 ,
.Xr cpio 5 ,
.Xr mtree 5 ,
.Xr tar 5
diff --git a/libarchive/archive_write_set_format_iso9660.c b/libarchive/archive_write_set_format_iso9660.c
index badc88bad0c9..cacbdde7dcb0 100644
--- a/libarchive/archive_write_set_format_iso9660.c
+++ b/libarchive/archive_write_set_format_iso9660.c
@@ -3650,7 +3650,7 @@ wb_consume(struct archive_write *a, size_t size)
if (size > iso9660->wbuff_remaining ||
iso9660->wbuff_remaining == 0) {
archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC,
- "Internal Programing error: iso9660:wb_consume()"
+ "Internal Programming error: iso9660:wb_consume()"
" size=%jd, wbuff_remaining=%jd",
(intmax_t)size, (intmax_t)iso9660->wbuff_remaining);
return (ARCHIVE_FATAL);
@@ -3671,7 +3671,7 @@ wb_set_offset(struct archive_write *a, int64_t off)
if (iso9660->wbuff_type != WB_TO_TEMP) {
archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC,
- "Internal Programing error: iso9660:wb_set_offset()");
+ "Internal Programming error: iso9660:wb_set_offset()");
return (ARCHIVE_FATAL);
}
@@ -8128,7 +8128,7 @@ zisofs_write_to_temp(struct archive_write *a, const void *buff, size_t s)
{
(void)buff; /* UNUSED */
(void)s; /* UNUSED */
- archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC, "Programing error");
+ archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC, "Programming error");
return (ARCHIVE_FATAL);
}
diff --git a/libarchive/archive_write_set_format_mtree.c b/libarchive/archive_write_set_format_mtree.c
index 0f2431e6abe0..aa41e9acc22b 100644
--- a/libarchive/archive_write_set_format_mtree.c
+++ b/libarchive/archive_write_set_format_mtree.c
@@ -186,7 +186,7 @@ struct mtree_writer {
#endif
/* Keyword options */
int keys;
-#define F_CKSUM 0x00000001 /* check sum */
+#define F_CKSUM 0x00000001 /* checksum */
#define F_DEV 0x00000002 /* device type */
#define F_DONE 0x00000004 /* directory done */
#define F_FLAGS 0x00000008 /* file flags */
@@ -371,7 +371,7 @@ mtree_quote(struct archive_string *s, const char *str)
}
/*
- * Indent a line as mtree utility to be readable for people.
+ * Indent a line as the mtree utility does so it is readable for people.
*/
static void
mtree_indent(struct mtree_writer *mtree)
@@ -446,8 +446,8 @@ mtree_indent(struct mtree_writer *mtree)
/*
* Write /set keyword.
- * Set most used value of uid,gid,mode and fflags, which are
- * collected by attr_counter_set_collect() function.
+ * Set the most used value of uid, gid, mode and fflags, which are
+ * collected by the attr_counter_set_collect() function.
*/
static void
write_global(struct mtree_writer *mtree)
@@ -649,7 +649,7 @@ attr_counter_inc(struct attr_counter **top, struct attr_counter *ac,
}
/*
- * Tabulate uid,gid,mode and fflags of a entry in order to be used for /set.
+ * Tabulate uid, gid, mode and fflags of a entry in order to be used for /set.
*/
static int
attr_counter_set_collect(struct mtree_writer *mtree, struct mtree_entry *me)
@@ -912,7 +912,7 @@ archive_write_mtree_header(struct archive_write *a,
/* If the current file is a regular file, we have to
* compute the sum of its content.
- * Initialize a bunch of sum check context. */
+ * Initialize a bunch of checksum context. */
if (mtree_entry->reg_info)
sum_init(mtree);
@@ -1265,7 +1265,7 @@ archive_write_mtree_free(struct archive_write *a)
if (mtree == NULL)
return (ARCHIVE_OK);
- /* Make sure we dot not leave any entries. */
+ /* Make sure we do not leave any entries. */
mtree_entry_register_free(mtree);
archive_string_free(&mtree->cur_dirstr);
archive_string_free(&mtree->ebuf);
@@ -2024,7 +2024,7 @@ mtree_entry_tree_add(struct archive_write *a, struct mtree_entry **filep)
if (file->parentdir.length == 0) {
archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC,
- "Internal programing error "
+ "Internal programming error "
"in generating canonical name for %s",
file->pathname.s);
return (ARCHIVE_FAILED);
diff --git a/libarchive/archive_write_set_options.3 b/libarchive/archive_write_set_options.3
index aeb7a1848658..a9f70a664092 100644
--- a/libarchive/archive_write_set_options.3
+++ b/libarchive/archive_write_set_options.3
@@ -24,7 +24,7 @@
.\"
.\" $FreeBSD$
.\"
-.Dd February 2, 2012
+.Dd July 27, 2019
.Dt ARCHIVE_WRITE_OPTIONS 3
.Os
.Sh NAME
@@ -70,7 +70,7 @@ specific write modules.
.Fn archive_write_set_filter_option ,
.Fn archive_write_set_format_option
.Xc
-Specifies an option that will be passed to currently-registered
+Specifies an option that will be passed to the currently-registered
filters (including decompression filters) or format readers.
.Pp
If
@@ -138,7 +138,7 @@ If either function returns
.Cm ARCHIVE_FATAL
will be returned
immediately.
-Otherwise, greater of the two values will be returned.
+Otherwise, the greater of the two values will be returned.
.\"
.It Fn archive_write_set_options
.Ar options
@@ -203,22 +203,28 @@ These options are used to set standard ISO9660 metadata.
.Bl -tag -compact -width indent
.It Cm abstract-file Ns = Ns Ar filename
The file with the specified name will be identified in the ISO9660 metadata
-as holding the abstract for this volume. Default: none.
+as holding the abstract for this volume.
+Default: none.
.It Cm application-id Ns = Ns Ar filename
The file with the specified name will be identified in the ISO9660 metadata
-as holding the application identifier for this volume. Default: none.
+as holding the application identifier for this volume.
+Default: none.
.It Cm biblio-file Ns = Ns Ar filename
The file with the specified name will be identified in the ISO9660 metadata
-as holding the bibliography for this volume. Default: none.
+as holding the bibliography for this volume.
+Default: none.
.It Cm copyright-file Ns = Ns Ar filename
The file with the specified name will be identified in the ISO9660 metadata
-as holding the copyright for this volume. Default: none.
+as holding the copyright for this volume.
+Default: none.
.It Cm publisher Ns = Ns Ar filename
The file with the specified name will be identified in the ISO9660 metadata
-as holding the publisher information for this volume. Default: none.
+as holding the publisher information for this volume.
+Default: none.
.It Cm volume-id Ns = Ns Ar string
The specified string will be used as the Volume Identifier in the ISO9660 metadata.
-It is limited to 32 bytes. Default: none.
+It is limited to 32 bytes.
+Default: none.
.El
.It Format iso9660 - boot support
These options are used to make an ISO9660 image that can be directly
@@ -266,7 +272,7 @@ If the boot image is exactly 1.2MB, 1.44MB, or 2.88MB, then
the default is
.Cm fd ,
otherwise the default is
-.Cm no-emulation.
+.Cm no-emulation .
.El
.It Format iso9660 - filename and size extensions
Various extensions to the base ISO9660 format.
@@ -290,7 +296,7 @@ This does not impact names stored in the Rockridge or Joliet extension area.
Default: disabled.
.It Cm allow-period
If enabled, allows filenames to contain trailing period characters, in violation of the ISO9660 specification.
-If disabled,trailing periods will be converted to underscore characters.
+If disabled, trailing periods will be converted to underscore characters.
This does not impact names stored in the Rockridge or Joliet extension area.
Default: disabled.
.It Cm allow-pvd-lowercase
@@ -398,6 +404,27 @@ Specifies a filename that should not be compressed when using
This option can be provided multiple times to suppress compression
on many files.
.El
+.It Format 7zip
+.Bl -tag -compact -width indent
+.It Cm compression
+The value is one of
+.Dq store ,
+.Dq deflate ,
+.Dq bzip2 ,
+.Dq lzma1 ,
+.Dq lzma2
+or
+.Dq ppmd
+to indicate how the following entries should be compressed.
+Note that this setting is ignored for directories, symbolic links,
+and other special entries.
+.It Cm compression-level
+The value is interpreted as a decimal integer specifying the
+compression level.
+Values between 0 and 9 are supported.
+The interpretation of the compression level depends on the chosen
+compression method.
+.El
.It Format zip
.Bl -tag -compact -width indent
.It Cm compression
@@ -408,6 +435,15 @@ or
to indicate how the following entries should be compressed.
Note that this setting is ignored for directories, symbolic links,
and other special entries.
+.It Cm compression-level
+The value is interpreted as a decimal integer specifying the
+compression level.
+Values between 0 and 9 are supported.
+A compression level of 0 switches the compression method to
+.Dq store ,
+other values will enable
+.Dq deflate
+compression with the given level.
.It Cm experimental
This boolean option enables or disables experimental Zip features
that may not be compatible with other Zip implementations.
@@ -465,9 +501,9 @@ functions.
.\"
.Sh SEE ALSO
.Xr tar 1 ,
-.Xr libarchive 3 ,
.Xr archive_read_set_options 3 ,
-.Xr archive_write 3
+.Xr archive_write 3 ,
+.Xr libarchive 3
.Sh HISTORY
The
.Nm libarchive
diff --git a/libarchive/archive_write_set_passphrase.3 b/libarchive/archive_write_set_passphrase.3
index 2585595e331a..2db77034c76e 100644
--- a/libarchive/archive_write_set_passphrase.3
+++ b/libarchive/archive_write_set_passphrase.3
@@ -49,7 +49,7 @@ Streaming Archive Library (libarchive, -larchive)
.Sh DESCRIPTION
.Bl -tag -width indent
.It Fn archive_write_set_passphrase
-Set a passphrase for writing an encryption archive.
+Set a passphrase for writing an encrypted archive.
If
.Ar passphrase
is
@@ -59,16 +59,16 @@ or empty, this function will do nothing and
will be returned.
Otherwise,
.Cm ARCHIVE_OK
-will be returned.
+will be returned.
.It Fn archive_write_set_passphrase_callback
-Register callback function that will be invoked to get a passphrase
-for encrption if the passphrase was not set by the
+Register a callback function that will be invoked to get a passphrase
+for encryption if the passphrase was not set by the
.Fn archive_write_set_passphrase
function.
.El
.\" .Sh ERRORS
.Sh SEE ALSO
.Xr tar 1 ,
-.Xr libarchive 3 ,
.Xr archive_write 3 ,
-.Xr archive_write_set_options 3
+.Xr archive_write_set_options 3 ,
+.Xr libarchive 3
diff --git a/libarchive/libarchive_changes.3 b/libarchive/libarchive_changes.3
index adc87febd71d..6bf8db038c73 100644
--- a/libarchive/libarchive_changes.3
+++ b/libarchive/libarchive_changes.3
@@ -35,7 +35,6 @@
This page describes user-visible changes in libarchive3, and lists
public functions and other symbols changed, deprecated or removed
in libarchive3, along with their replacements if any.
-.Pp
.\"
.Ss Multiple Filters
.\"
@@ -330,13 +329,13 @@ or
.Li 10240
.El
.Sh SEE ALSO
-.Xr libarchive 3 ,
.Xr archive_read 3 ,
.Xr archive_read_filter 3 ,
.Xr archive_read_format 3 ,
.Xr archive_read_set_options 3 ,
+.Xr archive_util 3 ,
.Xr archive_write 3 ,
.Xr archive_write_filter 3 ,
.Xr archive_write_format 3 ,
.Xr archive_write_set_options 3 ,
-.Xr archive_util 3
+.Xr libarchive 3
diff --git a/libarchive/libarchive_internals.3 b/libarchive/libarchive_internals.3
index 8275d66e68f1..d672f3e8a64d 100644
--- a/libarchive/libarchive_internals.3
+++ b/libarchive/libarchive_internals.3
@@ -350,8 +350,8 @@ as a dedicated ZIP program.
.Xr archive_entry 3 ,
.Xr archive_read 3 ,
.Xr archive_write 3 ,
-.Xr archive_write_disk 3
-.Xr libarchive 3 ,
+.Xr archive_write_disk 3 ,
+.Xr libarchive 3
.Sh HISTORY
The
.Nm libarchive
diff --git a/libarchive/mtree.5 b/libarchive/mtree.5
index e607e4a81977..8147796f3100 100644
--- a/libarchive/mtree.5
+++ b/libarchive/mtree.5
@@ -133,7 +133,6 @@ or
.Sy char
file types.
The value must be one of the following forms:
-.Pp
.Bl -tag -width 4n
.It Ar format , Ns Ar major , Ns Ar minor Ns Bo , Ns Ar subunit Bc
A device with
@@ -165,8 +164,8 @@ are recognized:
.Sy solaris ,
.Sy sunos ,
.Sy svr3 ,
-.Sy svr4 ,
-and
+.Sy svr4 ,
+and
.Sy ultrix .
.Pp
See
@@ -288,12 +287,10 @@ The file owner as a numeric value.
.It Cm uname
The file owner as a symbolic name.
.El
-.Pp
.Sh SEE ALSO
.Xr cksum 1 ,
.Xr find 1 ,
.Xr mtree 8
-.Sh BUGS
.Sh HISTORY
The
.Nm
diff --git a/libarchive/tar.5 b/libarchive/tar.5
index 30b837dc4133..34ad4f79315e 100644
--- a/libarchive/tar.5
+++ b/libarchive/tar.5
@@ -441,7 +441,7 @@ archives to store files much larger than the historic 8GB limit.
Vendor-specific attributes used by Joerg Schilling's
.Nm star
implementation.
-.It Cm SCHILY.acl.access , Cm SCHILY.acl.default, Cm SCHILY.acl.ace
+.It Cm SCHILY.acl.access , Cm SCHILY.acl.default , Cm SCHILY.acl.ace
Stores the access, default and NFSv4 ACLs as textual strings in a format
that is an extension of the format specified by POSIX.1e draft 17.
In particular, each user or group access specification can include
@@ -456,7 +456,7 @@ The file flags.
.It Cm SCHILY.realsize
The full size of the file on disk.
XXX explain? XXX
-.It Cm SCHILY.dev, Cm SCHILY.ino , Cm SCHILY.nlinks
+.It Cm SCHILY.dev , Cm SCHILY.ino , Cm SCHILY.nlinks
The device number, inode number, and link count for the entry.
In particular, note that a pax interchange format archive using Joerg
Schilling's
@@ -473,7 +473,7 @@ The time when the file was created.
.Dq ctime
attribute, which refers to the time when the file
metadata was last changed.)
-.It Cm LIBARCHIVE.xattr. Ns Ar namespace Ns . Ns Ar key
+.It Cm LIBARCHIVE.xattr . Ns Ar namespace . Ns Ar key
Libarchive stores POSIX.1e-style extended attributes using
keys of this form.
The
@@ -890,7 +890,8 @@ GNU tar long pathname for the following header.
.It Cm M
GNU tar multivolume marker, indicating the file is a continuation of a file from the previous volume.
.It Cm N
-GNU tar long filename support. Deprecated.
+GNU tar long filename support.
+Deprecated.
.It Cm S
GNU tar sparse regular file.
.It Cm V
diff --git a/libarchive/test/test_archive_write_add_filter_by_name.c b/libarchive/test/test_archive_write_add_filter_by_name.c
index d962af92311b..ba8c1d0472f6 100644
--- a/libarchive/test/test_archive_write_add_filter_by_name.c
+++ b/libarchive/test/test_archive_write_add_filter_by_name.c
@@ -48,7 +48,7 @@ test_filter_by_name(const char *filter_name, int filter_code,
r = archive_write_add_filter_by_name(a, filter_name);
if (r == ARCHIVE_WARN) {
if (!can_filter_prog()) {
- skipping("%s filter not suported on this platform",
+ skipping("%s filter not supported on this platform",
filter_name);
assertEqualInt(ARCHIVE_OK, archive_write_free(a));
free(buff);
@@ -59,7 +59,7 @@ test_filter_by_name(const char *filter_name, int filter_code,
"lzma compression not supported on this platform") == 0 ||
strcmp(archive_error_string(a),
"xz compression not supported on this platform") == 0)) {
- skipping("%s filter not suported on this platform", filter_name);
+ skipping("%s filter not supported on this platform", filter_name);
assertEqualInt(ARCHIVE_OK, archive_write_free(a));
free(buff);
return;
diff --git a/libarchive/test/test_archive_write_set_format_filter_by_ext.c b/libarchive/test/test_archive_write_set_format_filter_by_ext.c
index c073505f7c97..4fe18e18c2d1 100644
--- a/libarchive/test/test_archive_write_set_format_filter_by_ext.c
+++ b/libarchive/test/test_archive_write_set_format_filter_by_ext.c
@@ -61,7 +61,7 @@ test_format_filter_by_ext(const char *output_file,
strcmp(archive_error_string(a),
"xz compression not supported on this platform") == 0)) {
const char *filter_name = archive_filter_name(a, 0);
- skipping("%s filter not suported on this platform", filter_name);
+ skipping("%s filter not supported on this platform", filter_name);
assertEqualInt(ARCHIVE_OK, archive_write_free(a));
free(buff);
return;
diff --git a/libarchive/test/test_read_format_raw.c b/libarchive/test/test_read_format_raw.c
index 0dac8bfbab4a..3961723b48a1 100644
--- a/libarchive/test/test_read_format_raw.c
+++ b/libarchive/test/test_read_format_raw.c
@@ -36,7 +36,9 @@ DEFINE_TEST(test_read_format_raw)
const char *reffile1 = "test_read_format_raw.data";
const char *reffile2 = "test_read_format_raw.data.Z";
const char *reffile3 = "test_read_format_raw.bufr";
+#ifdef HAVE_ZLIB_H
const char *reffile4 = "test_read_format_raw.data.gz";
+#endif
/* First, try pulling data out of an uninterpretable file. */
extract_reference_file(reffile1);
@@ -119,6 +121,7 @@ DEFINE_TEST(test_read_format_raw)
assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+#ifdef HAVE_ZLIB_H
/* Fourth, try with gzip which has metadata. */
extract_reference_file(reffile4);
assert((a = archive_read_new()) != NULL);
@@ -144,4 +147,5 @@ DEFINE_TEST(test_read_format_raw)
assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+#endif
}
diff --git a/libarchive/test/test_read_format_zip.c b/libarchive/test/test_read_format_zip.c
index b6e957a96cec..9afbfb6c5866 100644
--- a/libarchive/test/test_read_format_zip.c
+++ b/libarchive/test/test_read_format_zip.c
@@ -139,7 +139,7 @@ verify_basic(struct archive *a, int seek_checks)
} else {
assertEqualInt(ARCHIVE_FAILED, archive_read_data(a, buff, 19));
assertEqualString(archive_error_string(a),
- "Unsupported ZIP compression method (deflation)");
+ "Unsupported ZIP compression method (8: deflation)");
assert(archive_errno(a) != 0);
}
@@ -162,7 +162,7 @@ verify_basic(struct archive *a, int seek_checks)
} else {
assertEqualInt(ARCHIVE_FAILED, archive_read_data(a, buff, 19));
assertEqualString(archive_error_string(a),
- "Unsupported ZIP compression method (deflation)");
+ "Unsupported ZIP compression method (8: deflation)");
assert(archive_errno(a) != 0);
}
assertEqualInt(ARCHIVE_EOF, archive_read_next_header(a, &ae));
@@ -231,7 +231,7 @@ verify_info_zip_ux(struct archive *a, int seek_checks)
} else {
assertEqualInt(ARCHIVE_FAILED, archive_read_data(a, buff, 19));
assertEqualString(archive_error_string(a),
- "Unsupported ZIP compression method (deflation)");
+ "Unsupported ZIP compression method (8: deflation)");
assert(archive_errno(a) != 0);
}
assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
@@ -302,7 +302,7 @@ verify_extract_length_at_end(struct archive *a, int seek_checks)
} else {
assertEqualIntA(a, ARCHIVE_FAILED, archive_read_extract(a, ae, 0));
assertEqualString(archive_error_string(a),
- "Unsupported ZIP compression method (deflation)");
+ "Unsupported ZIP compression method (8: deflation)");
assert(archive_errno(a) != 0);
}
diff --git a/libarchive/test/test_read_format_zip_traditional_encryption_data.c b/libarchive/test/test_read_format_zip_traditional_encryption_data.c
index 305261567ec8..20e55bbc6948 100644
--- a/libarchive/test/test_read_format_zip_traditional_encryption_data.c
+++ b/libarchive/test/test_read_format_zip_traditional_encryption_data.c
@@ -130,7 +130,7 @@ DEFINE_TEST(test_read_format_zip_traditional_encryption_data)
assertEqualInt(ARCHIVE_FAILED,
archive_read_data(a, buff, sizeof(buff)));
assertEqualString(archive_error_string(a),
- "Unsupported ZIP compression method (deflation)");
+ "Unsupported ZIP compression method (8: deflation)");
assert(archive_errno(a) != 0);
}
@@ -148,7 +148,7 @@ DEFINE_TEST(test_read_format_zip_traditional_encryption_data)
assertEqualInt(ARCHIVE_FAILED,
archive_read_data(a, buff, sizeof(buff)));
assertEqualString(archive_error_string(a),
- "Unsupported ZIP compression method (deflation)");
+ "Unsupported ZIP compression method (8: deflation)");
assert(archive_errno(a) != 0);
}
diff --git a/libarchive/test/test_write_filter_zstd.c b/libarchive/test/test_write_filter_zstd.c
index da3c806671a4..ba1b6bfe716b 100644
--- a/libarchive/test/test_write_filter_zstd.c
+++ b/libarchive/test/test_write_filter_zstd.c
@@ -34,7 +34,7 @@ DEFINE_TEST(test_write_filter_zstd)
char *buff, *data;
size_t buffsize, datasize;
char path[16];
- size_t used1, used2;
+ size_t used1, used2, used3;
int i, r;
buffsize = 2000000;
@@ -125,7 +125,7 @@ DEFINE_TEST(test_write_filter_zstd)
assertEqualIntA(a, ARCHIVE_OK,
archive_write_set_filter_option(a, NULL, "compression-level", "9"));
assertEqualIntA(a, ARCHIVE_OK,
- archive_write_set_filter_option(a, NULL, "compression-level", "6"));
+ archive_write_set_filter_option(a, NULL, "compression-level", "7"));
assertEqualIntA(a, ARCHIVE_OK, archive_write_open_memory(a, buff, buffsize, &used2));
for (i = 0; i < 100; i++) {
sprintf(path, "file%03d", i);
@@ -140,10 +140,6 @@ DEFINE_TEST(test_write_filter_zstd)
assertEqualIntA(a, ARCHIVE_OK, archive_write_close(a));
assertEqualInt(ARCHIVE_OK, archive_write_free(a));
- failure("compression-level=6 wrote %d bytes, default wrote %d bytes",
- (int)used2, (int)used1);
- assert(used2 < used1);
-
assert((a = archive_read_new()) != NULL);
assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a));
r = archive_read_support_filter_zstd(a);
@@ -168,6 +164,64 @@ DEFINE_TEST(test_write_filter_zstd)
assertEqualInt(ARCHIVE_OK, archive_read_free(a));
/*
+ * One more time at level 1
+ */
+ assert((a = archive_write_new()) != NULL);
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_ustar(a));
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_write_set_bytes_per_block(a, 10));
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_zstd(a));
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_write_set_filter_option(a, NULL, "compression-level", "1"));
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_open_memory(a, buff, buffsize, &used3));
+ assert((ae = archive_entry_new()) != NULL);
+ archive_entry_set_filetype(ae, AE_IFREG);
+ archive_entry_set_size(ae, datasize);
+ for (i = 0; i < 100; i++) {
+ sprintf(path, "file%03d", i);
+ archive_entry_copy_pathname(ae, path);
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, ae));
+ assertA(datasize == (size_t)archive_write_data(a, data, datasize));
+ }
+ archive_entry_free(ae);
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_close(a));
+ assertEqualInt(ARCHIVE_OK, archive_write_free(a));
+
+ assert((a = archive_read_new()) != NULL);
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a));
+ r = archive_read_support_filter_zstd(a);
+ if (r == ARCHIVE_WARN) {
+ skipping("zstd reading not fully supported on this platform");
+ } else {
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_read_support_filter_all(a));
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_read_open_memory(a, buff, used3));
+ for (i = 0; i < 100; i++) {
+ sprintf(path, "file%03d", i);
+ failure("Trying to read %s", path);
+ if (!assertEqualIntA(a, ARCHIVE_OK,
+ archive_read_next_header(a, &ae)))
+ break;
+ assertEqualString(path, archive_entry_pathname(ae));
+ assertEqualInt((int)datasize, archive_entry_size(ae));
+ }
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
+ }
+ assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+
+ /*
+ * Check output sizes for various compression levels, expectation
+ * is that archive size for level=7 < default < level=1
+ */
+ failure("compression-level=7 wrote %d bytes, default wrote %d bytes",
+ (int)used2, (int)used1);
+ assert(used2 < used1);
+ failure("compression-level=1 wrote %d bytes, default wrote %d bytes",
+ (int)used3, (int)used1);
+ assert(used1 < used3);
+
+ /*
* Test various premature shutdown scenarios to make sure we
* don't crash or leak memory.
*/