X-Git-Url: https://wimlib.net/git/?p=wimlib;a=blobdiff_plain;f=src%2Fwimlib.h;h=7a2fad7d8c3c87b595f848db31ba7876307fd39d;hp=479fa241791a902016dd7ce515b5610028f7baf1;hb=500d90055cae33925961076f4eda19bb2ec57d8c;hpb=aee5df8a6702da0782d64333eb8b3d1fb52c880b diff --git a/src/wimlib.h b/src/wimlib.h index 479fa241..7a2fad7d 100644 --- a/src/wimlib.h +++ b/src/wimlib.h @@ -697,14 +697,17 @@ struct wimlib_capture_config { /** Reparse-point fixups: Modify absolute symbolic links (or junction points, * in the case of Windows) that point inside the directory being captured to * instead be absolute relative to the directory being captured, rather than the - * current root. + * current root; also exclude absolute symbolic links that point outside the + * directory tree being captured. * - * Without this flag, the default is to do the reparse-point fixups if - * WIM_HDR_FLAG_RP_FIX is set in the WIM header. */ + * Without this flag, the default is to do this if WIM_HDR_FLAG_RP_FIX is set in + * the WIM header or if this is the first image being added. + * WIM_HDR_FLAG_RP_FIX is set if the first image in a WIM is captured with + * reparse point fixups enabled and currently cannot be unset. */ #define WIMLIB_ADD_IMAGE_FLAG_RPFIX 0x00000100 -/* Don't do reparse point fixups. Without this flag, the default is to do - * reparse point fixes if WIM_HDR_FLAG_RP_FIX is set in the WIM header. */ +/* Don't do reparse point fixups. The default behavior is described in the + * documentation for ::WIMLIB_ADD_IMAGE_FLAG_RPFIX. */ #define WIMLIB_ADD_IMAGE_FLAG_NORPFIX 0x00000200 /****************************** @@ -754,6 +757,16 @@ struct wimlib_capture_config { * not have permission to set the desired one. */ #define WIMLIB_EXTRACT_FLAG_STRICT_ACLS 0x00000080 +/* Extract equivalent to ::WIMLIB_ADD_IMAGE_FLAG_RPFIX; force reparse-point + * fixups on, so absolute symbolic links or junction points will be fixed to be + * absolute relative to the actual extraction root. Done by default if + * WIM_HDR_FLAG_RP_FIX is set in the WIM header. */ +#define WIMLIB_EXTRACT_FLAG_RPFIX 0x00000100 + +/** Force reparse-point fixups on extraction off, regardless of the state of the + * WIM_HDR_FLAG_RP_FIX flag in the WIM header. */ +#define WIMLIB_EXTRACT_FLAG_NORPFIX 0x00000200 + /****************************** * WIMLIB_MOUNT_FLAG_* * ******************************/ @@ -929,6 +942,7 @@ enum wimlib_error_code { WIMLIB_ERR_ICONV_NOT_AVAILABLE, WIMLIB_ERR_IMAGE_COUNT, WIMLIB_ERR_IMAGE_NAME_COLLISION, + WIMLIB_ERR_INSUFFICIENT_PRIVILEGES_TO_EXTRACT, WIMLIB_ERR_INTEGRITY, WIMLIB_ERR_INVALID_CAPTURE_CONFIG, WIMLIB_ERR_INVALID_CHUNK_SIZE, @@ -942,6 +956,7 @@ enum wimlib_error_code { WIMLIB_ERR_INVALID_OVERLAY, WIMLIB_ERR_INVALID_PARAM, WIMLIB_ERR_INVALID_PART_NUMBER, + WIMLIB_ERR_INVALID_REPARSE_DATA, WIMLIB_ERR_INVALID_RESOURCE_HASH, WIMLIB_ERR_INVALID_RESOURCE_SIZE, WIMLIB_ERR_INVALID_SECURITY_DATA, @@ -963,6 +978,7 @@ enum wimlib_error_code { WIMLIB_ERR_READLINK, WIMLIB_ERR_RENAME, WIMLIB_ERR_REOPEN, + WIMLIB_ERR_REPARSE_POINT_FIXUP_FAILED, WIMLIB_ERR_RESOURCE_ORDER, WIMLIB_ERR_SPECIAL_FILE, WIMLIB_ERR_SPLIT_INVALID, @@ -987,12 +1003,9 @@ enum wimlib_error_code { /** * Adds an image to a WIM file from an on-disk directory tree or NTFS volume. * - * The directory tree of NTFS volume is read immediately for the purpose of - * constructing a directory entry tree in-memory. Also, all files are read to - * calculate their SHA1 message digests. However, because the directory tree - * may contain a very large amount of data, the files themselves are not read - * into memory permanently, and instead references to their paths saved. The - * files are then read on-demand if wimlib_write() or wimlib_overwrite() is + * The directory tree or NTFS volume is scanned immediately to load the dentry + * tree into memory, and file attributes and symbolic links are read. However, + * actual file data is not read until wimlib_write() or wimlib_overwrite() is * called. * * See the manual page for the @b wimlib-imagex program for more information @@ -1961,6 +1974,10 @@ wimlib_open_wim(const wimlib_tchar *wim_file, * and while abnormal termination of the program will result in extra data * appended to the original WIM, it should still be a valid WIM. * + * If this function completes successfully, no functions should be called on @a + * wim other than wimlib_free(). You must use wimlib_open_wim() to read the WIM + * file anew. + * * @param wim * Pointer to the ::WIMStruct for the WIM file to write. There may have * been in-memory changes made to it, which are then reflected in the @@ -1988,11 +2005,6 @@ wimlib_open_wim(const wimlib_tchar *wim_file, * @retval ::WIMLIB_ERR_RENAME * The temporary file that the WIM was written to could not be renamed to * the original filename of @a wim. - * @retval ::WIMLIB_ERR_REOPEN - * The WIM was overwritten successfully, but it could not be re-opened - * read-only. Therefore, the resources in the WIM can no longer be - * accessed, so this limits the functions that can be called on @a wim - * before calling wimlib_free(). */ extern int wimlib_overwrite(WIMStruct *wim, int write_flags, unsigned num_threads,