+
+WIMLIBAPI int wimlib_apply_image_to_ntfs_volume(WIMStruct *w, int image,
+ const char *device, int flags)
+{
+#ifdef WITH_NTFS_3G
+ int ret;
+
+ if (!device)
+ return WIMLIB_ERR_INVALID_PARAM;
+ if (image == WIM_ALL_IMAGES) {
+ ERROR("Can only apply a single image when applying "
+ "directly to a NTFS volume");
+ return WIMLIB_ERR_INVALID_PARAM;
+ }
+ if (flags & (WIMLIB_EXTRACT_FLAG_SYMLINK | WIMLIB_EXTRACT_FLAG_HARDLINK)) {
+ ERROR("Cannot specifcy symlink or hardlink flags when applying ");
+ ERROR("directly to a NTFS volume");
+ return WIMLIB_ERR_INVALID_PARAM;
+ }
+ ret = wimlib_select_image(w, image);
+ if (ret != 0)
+ return ret;
+
+ if (getuid() != 0) {
+ ERROR("We are not root, but NTFS-3g requires root privileges to set arbitrary");
+ ERROR("security data on the NTFS filesystem. Please run this program as root");
+ ERROR("if you want to extract a WIM image while preserving NTFS-specific");
+ ERROR("information.");
+
+ return WIMLIB_ERR_NOT_ROOT;
+ }
+#else /* WITH_NTFS_3G */
+ ERROR("wimlib was compiled without support for NTFS-3g, so");
+ ERROR("we cannot apply a WIM image directly to a NTFS volume");
+ return WIMLIB_ERR_UNSUPPORTED;
+#endif /* !WITH_NTFS_3G */
+}