* \section encodings Locales and character encodings
*
* To support Windows as well as UNIX, wimlib's API typically takes and returns
- * strings of "tchars", which are in a platform-dependent encoding.
+ * strings of ::wimlib_tchar, which are in a platform-dependent encoding.
*
- * On Windows, each "tchar" is 2 bytes and is the same as a "wchar_t", and the
- * encoding is UTF-16LE.
+ * On Windows, each ::wimlib_tchar is 2 bytes and is the same as a "wchar_t",
+ * and the encoding is UTF-16LE.
*
- * On UNIX, each "tchar" is 1 byte and is simply a "char", and the encoding is
- * the locale-dependent multibyte encoding. I recommend you set your locale to a
- * UTF-8 capable locale to avoid any issues. Also, by default, wimlib on UNIX
- * will assume the locale is UTF-8 capable unless you call wimlib_global_init()
- * after having set your desired locale.
+ * On UNIX, each ::wimlib_tchar is 1 byte and is simply a "char", and the
+* encoding is the locale-dependent multibyte encoding. I recommend you set your
+* locale to a UTF-8 capable locale to avoid any issues. Also, by default,
+ * wimlib on UNIX will assume the locale is UTF-8 capable unless you call
+* wimlib_global_init() after having set your desired locale.
*
* \section Limitations
*
* without mounting it, other than by adding, removing, or extracting an
* entire image. The FUSE mount feature should be used for this purpose.
* - Currently, Microsoft's @a image.exe can create slightly smaller WIM files
- * than wimlib when using maximum (LZX) compression because it knows how to
- * split up LZX compressed blocks, which is not yet implemented in wimlib.
+ * than wimlib (~2% or 3% smaller) when using maximum (LZX) compression.
* - wimlib is experimental and likely contains bugs; use Microsoft's @a
* imagex.exe if you want to make sure your WIM files are made "correctly".
* - The old WIM format from Vista pre-releases is not supported.
#ifdef __WIN32__
typedef wchar_t wimlib_tchar;
#else
+/** See \ref encodings */
typedef char wimlib_tchar;
#endif
* mode, or in Win32 native builds. */
#define WIMLIB_ADD_IMAGE_FLAG_NO_ACLS 0x00000020
+/** Fail immediately if the full security descriptor of any file or directory
+ * cannot be accessed. Only has an effect in Win32 native builds. The default
+ * behavior without this flag is to first try omitting the SACL from the
+ * security descriptor, then to try omitting the security descriptor entirely.
+ * */
+#define WIMLIB_ADD_IMAGE_FLAG_STRICT_ACLS 0x00000040
+
+/** Call the progress function with the message
+ * ::WIMLIB_PROGRESS_MSG_SCAN_DENTRY when a directory or file is excluded from
+ * capture. This is a subset of the messages provided by
+ * ::WIMLIB_ADD_IMAGE_FLAG_VERBOSE. */
+#define WIMLIB_ADD_IMAGE_FLAG_EXCLUDE_VERBOSE 0x00000080
+
/******************************
* WIMLIB_EXPORT_FLAG_* *
******************************/
/** Do not extract security descriptors. Only has an effect in NTFS apply mode,
* or in Win32 native builds. */
-#define WIMLIB_EXTRACT_FLAG_NOACLS 0x00000040
+#define WIMLIB_EXTRACT_FLAG_NO_ACLS 0x00000040
+
+/** Fail immediately if the full security descriptor of any file or directory
+ * cannot be set exactly as specified in the WIM file. The default behavior
+ * without this flag is to fall back to setting the security descriptor with the
+ * SACL omitted, then only the default inherited security descriptor, if we do
+ * not have permission to set the desired one. */
+#define WIMLIB_EXTRACT_FLAG_STRICT_ACLS 0x00000080
/******************************
* WIMLIB_MOUNT_FLAG_* *