]> wimlib.net Git - wimlib/blobdiff - include/wimlib.h
Add support for not extracting file attributes
[wimlib] / include / wimlib.h
index 129a6c5a749a0e349b881fd0a5bd0ebe27b78870..c2c32a8c164712ed6001e788d280676726e48c41 100644 (file)
@@ -33,7 +33,7 @@
  *
  * @section sec_intro Introduction
  *
- * This is the documentation for the library interface of wimlib 1.6.0, a C
+ * This is the documentation for the library interface of wimlib 1.6.1, a C
  * library for creating, modifying, extracting, and mounting files in the
  * Windows Imaging Format.  This documentation is intended for developers only.
  * If you have installed wimlib and want to know how to use the @b wimlib-imagex
 #define WIMLIB_MINOR_VERSION 6
 
 /** Patch version of the library (for example, the 5 in 1.2.5). */
-#define WIMLIB_PATCH_VERSION 0
+#define WIMLIB_PATCH_VERSION 1
 
 #ifdef __cplusplus
 extern "C" {
@@ -688,8 +688,8 @@ union wimlib_progress_info {
                        const wimlib_tchar *wim_target_path;
 
                        /** For ::WIMLIB_PROGRESS_MSG_SCAN_DENTRY and a status
-                        * of ::WIMLIB_SCAN_DENTRY_EXCLUDED_SYMLINK, this is the
-                        * target of the absolute symbolic link or junction
+                        * of @p WIMLIB_SCAN_DENTRY_EXCLUDED_SYMLINK, this is
+                        * the target of the absolute symbolic link or junction
                         * point.  */
                        const wimlib_tchar *symlink_target;
                };
@@ -1514,6 +1514,9 @@ typedef int (*wimlib_iterate_lookup_table_callback_t)(const struct wimlib_resour
  * one of the provided globs did not match a file.  */
 #define WIMLIB_EXTRACT_FLAG_STRICT_GLOB                        0x00080000
 
+/** Do not extract Windows file attributes such as readonly, hidden, etc.  */
+#define WIMLIB_EXTRACT_FLAG_NO_ATTRIBUTES              0x00100000
+
 /** @} */
 /** @ingroup G_mounting_wim_images
  * @{ */
@@ -1935,6 +1938,8 @@ enum wimlib_error_code {
 /** Used to specify all images in the WIM. */
 #define WIMLIB_ALL_IMAGES      (-1)
 
+/** @}  */
+
 /**
  * @ingroup G_modifying_wims
  *
@@ -2069,9 +2074,8 @@ wimlib_add_image_multisource(WIMStruct *wim,
  * images.  No on-disk file is created until wimlib_write() is called.
  *
  * @param ctype
- *     The type of compression to be used in the new WIM file.  Must be
- *     ::WIMLIB_COMPRESSION_TYPE_NONE, ::WIMLIB_COMPRESSION_TYPE_LZX, or
- *     ::WIMLIB_COMPRESSION_TYPE_XPRESS.
+ *     The type of compression to be used in the new WIM file, as one of the
+ *     ::wimlib_compression_type constants.
  * @param wim_ret
  *     On success, a pointer to an opaque ::WIMStruct for the new WIM file is
  *     written to the memory location pointed to by this paramater.  The
@@ -2079,8 +2083,7 @@ wimlib_add_image_multisource(WIMStruct *wim,
  *     it.
  * @return 0 on success; nonzero on error.
  * @retval ::WIMLIB_ERR_INVALID_COMPRESSION_TYPE
- *     @p ctype was not ::WIMLIB_COMPRESSION_TYPE_NONE,
- *     ::WIMLIB_COMPRESSION_TYPE_LZX, or ::WIMLIB_COMPRESSION_TYPE_XPRESS.
+ *     @p ctype was not a supported compression type.
  * @retval ::WIMLIB_ERR_NOMEM
  *     Failed to allocate needed memory.
  */
@@ -2470,12 +2473,14 @@ wimlib_extract_image_from_pipe(int pipe_fd,
                               wimlib_progress_func_t progress_func);
 
 /**
- * Similar to wimlib_extract_paths(), but the paths to extract from the WIM
- * image are specified in the UTF-8 text file named by @p path_list_file which
- * itself contains the list of paths to use, one per line.  Leading and trailing
- * whitespace, and otherwise empty lines and lines beginning with the ';'
- * character are ignored.  No quotes are needed as paths are otherwise delimited
- * by the newline character.
+ * @ingroup G_extracting_wims
+ *
+ * Since wimlib v1.6.0:  Similar to wimlib_extract_paths(), but the paths to
+ * extract from the WIM image are specified in the UTF-8 text file named by @p
+ * path_list_file which itself contains the list of paths to use, one per line.
+ * Leading and trailing whitespace, and otherwise empty lines and lines
+ * beginning with the ';' character are ignored.  No quotes are needed as paths
+ * are otherwise delimited by the newline character.
  */
 extern int
 wimlib_extract_pathlist(WIMStruct *wim, int image,
@@ -2485,8 +2490,10 @@ wimlib_extract_pathlist(WIMStruct *wim, int image,
                        wimlib_progress_func_t progress_func);
 
 /**
- * Similar to wimlib_extract_files(), but the files or directories to extract
- * from the WIM image are specified as an array of paths.
+ * @ingroup G_extracting_wims
+ *
+ * Since wimlib v1.6.0:  Similar to wimlib_extract_files(), but the files or
+ * directories to extract from the WIM image are specified as an array of paths.
  *
  * Each path will be extracted to a corresponding subdirectory of the @p target
  * based on its location in the WIM image.  For example, if one of the paths to
@@ -2566,12 +2573,11 @@ wimlib_free(WIMStruct *wim);
  * Converts a ::wimlib_compression_type value into a string.
  *
  * @param ctype
- *     ::WIMLIB_COMPRESSION_TYPE_NONE, ::WIMLIB_COMPRESSION_TYPE_LZX,
- *     ::WIMLIB_COMPRESSION_TYPE_XPRESS, or another value.
+ *     The ::wimlib_compression_type value to convert.
  *
  * @return
- *     A statically allocated string: "None", "LZX", "XPRESS", or "Invalid",
- *     respectively.
+ *     A statically allocated string naming the compression algorithm,
+ *     such as "None", "LZX", "XPRESS", or "Invalid".
  */
 extern const wimlib_tchar *
 wimlib_get_compression_type_string(int ctype);
@@ -2994,10 +3000,10 @@ wimlib_mount_image(WIMStruct *wim,
  *     in the integrity table.
  * @retval ::WIMLIB_ERR_INVALID_CHUNK_SIZE
  *     Resources in @p wim_file are compressed, but the chunk size was invalid
- *     for the WIM's compression format.
+ *     for the WIM's compression type.
  * @retval ::WIMLIB_ERR_INVALID_COMPRESSION_TYPE
  *     The header of @p wim_file says that resources in the WIM are compressed,
- *     but the header flag indicating LZX or XPRESS compression is not set.
+ *     but the header flag for a recognized compression type is not set.
  * @retval ::WIMLIB_ERR_INVALID_HEADER
  *     The header of @p wim_file was otherwise invalid.
  * @retval ::WIMLIB_ERR_INVALID_INTEGRITY_TABLE
@@ -3005,9 +3011,7 @@ wimlib_mount_image(WIMStruct *wim,
  *     wim_file contains an integrity table, but the integrity table is
  *     invalid.
  * @retval ::WIMLIB_ERR_INVALID_LOOKUP_TABLE_ENTRY
- *     The lookup table for the WIM contained duplicate entries that are not
- *     for metadata resources, or it contained an entry with a SHA1 message
- *     digest of all 0's.
+ *     The lookup table for the WIM was invalid.
  * @retval ::WIMLIB_ERR_INVALID_PARAM
  *     @p wim_ret was @c NULL.
  * @retval ::WIMLIB_ERR_IS_SPLIT_WIM
@@ -3024,8 +3028,7 @@ wimlib_mount_image(WIMStruct *wim,
  * @retval ::WIMLIB_ERR_UNEXPECTED_END_OF_FILE
  *     Unexpected end-of-file while reading data from @p wim_file.
  * @retval ::WIMLIB_ERR_UNKNOWN_VERSION
- *     A number other than 0x10d00 is written in the version field of the WIM
- *     header of @p wim_file.  (May be a pre-Vista WIM.)
+ *     The WIM version number was not recognized. (May be a pre-Vista WIM.)
  * @retval ::WIMLIB_ERR_WIM_IS_READONLY
  *     ::WIMLIB_OPEN_FLAG_WRITE_ACCESS was specified but the WIM file was
  *     considered read-only because of any of the reasons mentioned in the
@@ -3146,15 +3149,6 @@ wimlib_print_available_images(const WIMStruct *wim, int image);
 extern void
 wimlib_print_header(const WIMStruct *wim) _wimlib_deprecated;
 
-/**
- * @ingroup G_wim_information
- *
- * Deprecated in favor of wimlib_iterate_dir_tree(), which provides the
- * information in a way that can be accessed programatically.
- */
-extern int
-wimlib_print_metadata(WIMStruct *wim, int image) _wimlib_deprecated;
-
 /**
  * @ingroup G_nonstandalone_wims
  *
@@ -3383,25 +3377,23 @@ wimlib_set_image_descripton(WIMStruct *wim, int image,
  * Set the compression chunk size of a WIM to use in subsequent calls to
  * wimlib_write() or wimlib_overwrite().
  *
- * A compression chunk size will result in a greater compression ratio, but the
- * speed of random access to the WIM will be reduced, and the effect of an
- * increased compression chunk size is limited by the size of each file being
- * compressed.
+ * For compatibility reasons, using this function is not generally recommended.
+ * See the documentation for the @c --chunk-size option of <b>wimlib-imagex
+ * capture</b> for more information.
  *
- * <b>WARNING: Microsoft's software is seemingly incompatible with LZX chunk
- * sizes other than 32768.  Chunk sizes other than 32768 (for any format) are
- * also incompatible with wimlib v1.5.3 and earlier.</b>
+ * A larger compression chunk size will likely result in a better compression
+ * ratio, but the speed of random access to the WIM will be reduced.
+ * Furthermore, the effect of a larger compression chunk size is limited by the
+ * size of each stream ("file") being compressed.
  *
  * @param wim
  *     ::WIMStruct for a WIM.
- * @param out_chunk_size
+ * @param chunk_size
  *     The chunk size (in bytes) to set.  The valid chunk sizes are dependent
- *     on the compression format.  The XPRESS and LZMS compression formats
- *     support chunk sizes that are powers of 2 with exponents between 15 and
- *     26 inclusively, whereas the LZX compression format supports chunk sizes
- *     that are powers of 2 with exponents between 15 and 21 inclusively.  As a
- *     special case, if @p out_chunk_size is specified as 0, the chunk size is
- *     set to the default for the currently selected output compression type.
+ *     on the compression format; see the documentation for the @c --chunk-size
+ *     option of <b>wimlib-imagex capture</b> for more information.  As a
+ *     special case, if @p chunk_size is specified as 0, the chunk size is set
+ *     to the default for the currently selected output compression type.
  *
  * @return 0 on success; nonzero on error.
  *
@@ -3447,7 +3439,12 @@ wimlib_set_output_compression_type(WIMStruct *wim, int ctype);
  * @ingroup G_writing_and_overwriting_wims
  *
  * Similar to wimlib_set_output_compression_type(), but set the compression type
- * for writing packed streams.
+ * for writing packed streams (solid blocks).
+ *
+ * Note: based on testing, WIMGAPI is seemingly only compatible with LZMS
+ * compression in packed streams.  Therefore the use of this function is not
+ * recommended.  Also, with large chunk sizes, LZMS gives the best compression
+ * ratio among the alternatives anyway.
  */
 extern int
 wimlib_set_output_pack_compression_type(WIMStruct *wim, int ctype);
@@ -3952,10 +3949,7 @@ wimlib_write_to_fd(WIMStruct *wim,
  * decompressors currently support sliding windows, and there also exist
  * slightly different variants of these formats that are not supported
  * unmodified.
- */
-
-/**
- * @ingroup G_compression
+ *
  * @{
  */
 
@@ -4344,8 +4338,18 @@ wimlib_xpress_decompress(const void *cdata, unsigned clen,
                         void *udata, unsigned ulen)
                _wimlib_deprecated;
 
-/** @} */
 
+/**
+ * @}
+ */
+
+/** @ingroup G_wim_information
+ *
+ * Deprecated and will return ::WIMLIB_ERR_UNSUPPORTED.  Use
+ * wimlib_iterate_dir_tree() instead.  */
+extern int
+wimlib_print_metadata(WIMStruct *wim, int image)
+               _wimlib_deprecated;
 
 
 #ifdef __cplusplus