Windows-specific data are ordinarily ignored; however, there is also special
support for capturing and extracting images directly to/from unmounted NTFS
volumes. This was made possible with the help of libntfs-3g from the
- NTFS-3g project.
+ NTFS-3G project.
For both platforms the code for NTFS capture and extraction is complete enough
that it is possible to apply an image from the "install.wim" contained in recent
As much code as possible is shared among all supported platforms, but there
necessarily are some differences in what features are supported on each platform
and how they are implemented. Most notable is that file tree scanning and
-extraction are implemented separately for Windows, UNIX, and UNIX (NTFS-3g
+extraction are implemented separately for Windows, UNIX, and UNIX (NTFS-3G
mode), to ensure a fast and feature-rich implementation of each platform/mode.
wimlib is mainly used on x86 and x86_64 CPUs, but it should also work on a
inspired by a variety of sources, including open source projects and computer
science papers.
-The code in ntfs-3g_apply.c and ntfs-3g_capture.c uses the NTFS-3g library,
+The code in ntfs-3g_apply.c and ntfs-3g_capture.c uses the NTFS-3G library,
which is a library for reading and writing to NTFS filesystems (the filesystem
used by recent versions of Windows). See
http://www.tuxera.com/community/ntfs-3g-download/ for more information.
libntfs-3g, or configure --without-ntfs-3g to disable this
feature.])])
PKGCONFIG_PRIVATE_REQUIRES="$PKGCONFIG_PRIVATE_REQUIRES libntfs-3g"
- AC_DEFINE([WITH_NTFS_3G], [1], [Define to 1 if using NTFS-3g support])
+ AC_DEFINE([WITH_NTFS_3G], [1], [Define to 1 if using NTFS-3G support])
fi
AM_CONDITIONAL([WITH_NTFS_3G], [test "$WITH_NTFS_3G" = "yes"])
.PP
Note that before running either of the above commands, an NTFS filesystem may
need to be created on the partition, for example with format.exe on Windows or
-\fBmkntfs\fR(8) (part of NTFS-3g) on UNIX-like systems. For example, you might
+\fBmkntfs\fR(8) (part of NTFS-3G) on UNIX-like systems. For example, you might
run:
.RS
.PP
#include <stdbool.h>
-/* Note: the NTFS-3g headers define CASE_SENSITIVE, hence the WIMLIB prefix. */
+/* Note: the NTFS-3G headers define CASE_SENSITIVE, hence the WIMLIB prefix. */
typedef enum {
/* Use either case-sensitive or case-insensitive search, depending on
* the variable @default_ignore_case. */
* excluding the terminating null */
u16 d_extraction_name_nchars;
- /* When capturing from an NTFS volume using NTFS-3g, this flag is set on
+ /* When capturing from an NTFS volume using NTFS-3G, this flag is set on
* dentries that were created from a filename in the WIN32 or WIN32+DOS
* namespaces rather than the POSIX namespace. Otherwise this will
* always be 0. */
struct wim_dentry *i_first_extraction_alias;
#ifdef WITH_NTFS_3G
- /* In NTFS-3g extraction mode, this is set to the Master
+ /* In NTFS-3G extraction mode, this is set to the Master
* File Table (MFT) number of the NTFS file that was
* created for this inode. */
u64 i_mft_no;
= T("The WIM was not captured such that it can be "
"applied from a pipe"),
[WIMLIB_ERR_NTFS_3G]
- = T("NTFS-3g encountered an error (check errno)"),
+ = T("NTFS-3G encountered an error (check errno)"),
[WIMLIB_ERR_OPEN]
= T("Failed to open a file"),
[WIMLIB_ERR_OPENDIR]
* wimlib_extract_pathlist(). Internally, all end up calling
* do_wimlib_extract_paths() and extract_trees().
*
- * Although wimlib supports multiple extraction modes/backends (NTFS-3g, UNIX,
+ * Although wimlib supports multiple extraction modes/backends (NTFS-3G, UNIX,
* Win32), this file does not itself have code to extract files or directories
* to any specific target; instead, it handles generic functionality and relies
* on lower-level callback functions declared in `struct apply_operations' to do
#ifndef WITH_NTFS_3G
if (extract_flags & WIMLIB_EXTRACT_FLAG_NTFS) {
- ERROR("wimlib was compiled without support for NTFS-3g, so\n"
+ ERROR("wimlib was compiled without support for NTFS-3G, so\n"
" it cannot apply a WIM image directly to an NTFS volume.");
return WIMLIB_ERR_UNSUPPORTED;
}
* much information as possible, including security data, file attributes, DOS
* names, alternate data streams, and object IDs.
*
- * Note: because NTFS-3g offers inode-based interfaces, we actually don't need
+ * Note: because NTFS-3G offers inode-based interfaces, we actually don't need
* to deal with paths at all! (Other than for error messages.)
*/
goto out_close;
}
- /* Unlike most other NTFS-3g functions, ntfs_set_ntfs_dos_name()
+ /* Unlike most other NTFS-3G functions, ntfs_set_ntfs_dos_name()
* changes the directory's last modification timestamp...
* Change it back. */
return ntfs_3g_restore_timestamps(vol, dentry->d_parent->d_inode);
struct wim_dentry *root;
int ret;
- /* For NTFS-3g extraction mode we require that the dentries to extract
+ /* For NTFS-3G extraction mode we require that the dentries to extract
* form a single tree. */
root = list_first_entry(dentry_list, struct wim_dentry,
d_extraction_list_node);
/* Mount the NTFS volume. */
vol = ntfs_mount(ctx->common.target, 0);
if (!vol) {
- ERROR_WITH_ERRNO("Failed to mount \"%s\" with NTFS-3g",
+ ERROR_WITH_ERRNO("Failed to mount \"%s\" with NTFS-3G",
ctx->common.target);
return WIMLIB_ERR_NTFS_3G;
}
out_unmount:
if (ntfs_umount(ctx->vol, FALSE) && !ret) {
- ERROR_WITH_ERRNO("Failed to unmount \"%s\" with NTFS-3g",
+ ERROR_WITH_ERRNO("Failed to unmount \"%s\" with NTFS-3G",
ctx->common.target);
ret = WIMLIB_ERR_NTFS_3G;
}
}
const struct apply_operations ntfs_3g_apply_ops = {
- .name = "NTFS-3g",
+ .name = "NTFS-3G",
.get_supported_features = ntfs_3g_get_supported_features,
.extract = ntfs_3g_extract,
.context_size = sizeof(struct ntfs_3g_apply_ctx),
#include "wimlib/scan.h"
#include "wimlib/security.h"
-/* NTFS-3g 2013 renamed MS_RDONLY to NTFS_MNT_RDONLY. We can't check for the
+/* NTFS-3G 2013 renamed MS_RDONLY to NTFS_MNT_RDONLY. We can't check for the
* existence of NTFS_MNT_RDONLY at compilation time because it's an enum. We
* also can't check for MS_RDONLY being missing because it's also a system
- * constant. So check if the NTFS-3g specific MS_IGNORE_HIBERFILE is defined;
+ * constant. So check if the NTFS-3G specific MS_IGNORE_HIBERFILE is defined;
* if yes, then we need to use the old MS_RDONLY. */
#ifdef MS_IGNORE_HIBERFILE
# define NTFS_MNT_RDONLY MS_RDONLY
/*
* Add a new stream to the specified inode, with duplicate checking.
*
- * This works around a problem where NTFS-3g can list multiple unnamed data
+ * This works around a problem where NTFS-3G can list multiple unnamed data
* streams for a single file. In this case we can only keep one. We'll prefer
* one that is nonempty.
*/
if (unlikely(attributes & FILE_ATTRIBUTE_ENCRYPTED)) {
if (params->add_flags & WIMLIB_ADD_FLAG_NO_UNSUPPORTED_EXCLUDE)
{
- ERROR("Can't archive \"%s\" because NTFS-3g capture mode "
+ ERROR("Can't archive \"%s\" because NTFS-3G capture mode "
"does not support encrypted files and directories", path);
ret = WIMLIB_ERR_UNSUPPORTED_FILE;
goto out;
if (ret)
goto out;
- /* Reparse-point fixups are a no-op because in NTFS-3g capture mode we
+ /* Reparse-point fixups are a no-op because in NTFS-3G capture mode we
* only allow capturing an entire volume. */
if (params->add_flags & WIMLIB_ADD_FLAG_RPFIX &&
inode_is_symlink(inode))
u8 data[];
};
-/* Unconfirmed: are all 64 bytes of the object ID always present? Since NTFS-3g
+/* Unconfirmed: are all 64 bytes of the object ID always present? Since NTFS-3G
* permits shorter object IDs, we'll do the same for now. */
#define OBJECT_ID_MIN_LENGTH 16
#ifndef WITH_NTFS_3G
if (add_flags & WIMLIB_ADD_FLAG_NTFS) {
- ERROR("NTFS-3g capture mode is unsupported because wimlib "
+ ERROR("NTFS-3G capture mode is unsupported because wimlib "
"was compiled --without-ntfs-3g");
return WIMLIB_ERR_UNSUPPORTED;
}
* There are two modes:
* - Normal mode for any filesystems. We compare file names, contents,
* sizes, modes, access times, and hard links.
- * - NTFS mode for NTFS-3g mounted volumes. In this mode we need to
+ * - NTFS mode for NTFS-3G mounted volumes. In this mode we need to
* compare various NTFS-specific attributes such as named data streams
* and DOS names.
*