]> wimlib.net Git - wimlib/blobdiff - src/wimlib.h
wimlib.h: Doc fixes
[wimlib] / src / wimlib.h
index d1b22cd161cf608e4e82079f32954df50d41259c..1ccdd3b3e3b737b467437d8f0188a5d1a8893b82 100644 (file)
@@ -31,7 +31,7 @@
  *
  * \section intro Introduction
  *
- * This is the documentation for the library interface of wimlib 1.3.1.  If you
+ * This is the documentation for the library interface of wimlib 1.3.2.  If you
  * have installed wimlib and want to know how to use the @b wimlib-imagex
  * program, please see the man pages instead.  Also: the actual project page
  * where you can download the source code for the library is at <a
  *
  * \section encodings Locales and character encodings
  *
- * wimlib 1.3.0 has improved handling of different character encodings compared
- * to previous versions.  Functions are explictly noted as taking
- * ::wimlib_mbchar strings, which are encoded in the locale-dependent multibyte
- * encoding (e.g.  ASCII, ISO-8859-1, or UTF-8), or ::wimlib_utf8char strings,
- * which are encoded in UTF-8.  Generally, filenames and paths are in the
- * locale-dependent multibyte encoding, while other types of data must be
- * provided in UTF-8.  Please see the  man page for @b wimlib-imagex for more
- * information.  However, I strongly recommend that you use UTF-8 for your
- * locale's encoding so that ::wimlib_mbchar strings will be encoded the same
- * way as ::wimlib_utf8char strings.
+ * To support Windows as well as UNIX, wimlib's API typically takes and returns
+ * strings of ::wimlib_tchar, which are in a platform-dependent encoding.
+ *
+ * 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 ::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.
 #define WIMLIB_MINOR_VERSION 3
 
 /** Patch version of the library (for example, the 5 in 1.2.5). */
-#define WIMLIB_PATCH_VERSION 1
+#define WIMLIB_PATCH_VERSION 2
 
 /**
  * Opaque structure that represents a WIM file.  This is an in-memory structure
@@ -273,6 +273,7 @@ typedef struct WIMStruct WIMStruct;
 #ifdef __WIN32__
 typedef wchar_t wimlib_tchar;
 #else
+/** See \ref encodings */
 typedef char wimlib_tchar;
 #endif
 
@@ -637,6 +638,13 @@ struct wimlib_capture_source {
  * 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
+
 /******************************
  * WIMLIB_EXPORT_FLAG_* *
  ******************************/
@@ -675,7 +683,14 @@ struct wimlib_capture_source {
 
 /** 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_*        *
@@ -1500,12 +1515,17 @@ wimlib_get_part_number(const WIMStruct *wim, int *total_parts_ret);
 /**
  * Since wimlib 1.2.6:  Initialization function for wimlib.  This is not
  * re-entrant.  If you are calling wimlib functions concurrently in different
- * threads, then you must call this function serially first.  Also, since wimlib
- * 1.3.0, you must call this function if the character encoding of the current
- * locale is not UTF-8.  Otherwise, calling this function this function is not
- * required.
+ * threads, then you must call this function serially first.
+ *
+ * Since wimlib 1.3.0, you must call this function if the character encoding of
+ * the current locale is not UTF-8.
+ *
+ * Since wimlib 1.3.2, you must call this function if using the Windows-native
+ * build of the library so that certain functions can be dynamically loaded from
+ * system DLLs.
  *
- * This function always returns 0.
+ * This function currently always returns 0, but it may return other error codes
+ * in future releases.
  */
 extern int
 wimlib_global_init();