Version 2017.3.23AR.4
							parent
							
								
									b9ad82ced7
								
							
						
					
					
						commit
						5985c31665
					
				|  | @ -4,3 +4,6 @@ Detailed ChangeLog can be found at | |||
| 
 | ||||
| The changes and history may also be found on the source repository : | ||||
| 	http://sourceforge.net/p/ntfs-3g/ntfs-3g/ci/edge/tree/ | ||||
|   | ||||
| The ChangeLog specific to the advanced version is available on | ||||
| 	http://jp-andre.pagesperso-orange.fr/changelog.html | ||||
|  |  | |||
							
								
								
									
										29
									
								
								README
								
								
								
								
							
							
						
						
									
										29
									
								
								README
								
								
								
								
							|  | @ -23,6 +23,10 @@ advanced features, please get the instructions from | |||
| 
 | ||||
| 	http://www.tuxera.com/community/ntfs-3g-advanced/ | ||||
| 
 | ||||
| This specific version has support for new features as described in | ||||
| 
 | ||||
| 	http://jp-andre.pagesperso-orange.fr/ntfs-3g.html | ||||
| 
 | ||||
| News, support answers, problem submission instructions, support and discussion  | ||||
| forums, performance numbers and other information are available on the project  | ||||
| web site at | ||||
|  | @ -73,7 +77,11 @@ There are also a few make targets for building parts : | |||
| 	make drivers : only build drivers and libraries, without ntfsprogs | ||||
| 	make ntfsprogs : only build ntfsprogs and libntfs-3g, without drivers | ||||
| 
 | ||||
| Non-Linux: Please see  | ||||
| Solaris and OpenIndiana: Please see | ||||
| 
 | ||||
| 	http://jp-andre.pagesperso-orange.fr/openindiana-ntfs-3g.html | ||||
| 
 | ||||
| Other: Please see  | ||||
| 
 | ||||
| 	http://www.tuxera.com/community/ntfs-3g-download/ | ||||
| 
 | ||||
|  | @ -118,6 +126,25 @@ And, to end the test, unmount the usual way : | |||
| 	umount /dev/sda1 | ||||
| 
 | ||||
| 
 | ||||
| PRELINKED BINARY VERSION | ||||
| ======================== | ||||
| 
 | ||||
| Statically prelinked versions for X86 are compiled with gcc 4.1.2 and | ||||
| prepared as an upgrade to the ntfs-3g shipped with the live-CD Knoppix 5.1.1. | ||||
| The statically prelinked versions for Sparc are compiled with gcc 4.0.0. | ||||
| Both are restricting to using glibc 2.3.2 and should be usable on | ||||
| virtually any configuration since kernel 2.6.20 having a fuse kernel | ||||
| module (fuse.ko) installed. | ||||
| 
 | ||||
| They can be used like ordinary versions. Just copy the appropriate | ||||
| executable file into a readable directory, set the executable flags and | ||||
| start as root with the mount arguments : | ||||
| 
 | ||||
| 	linked-ntfs-3g /dev/sda1 /mnt/windows | ||||
| or | ||||
| 	sparc-ntfs-3g /dev/sda1 /mnt/windows | ||||
| 
 | ||||
| 
 | ||||
| NTFS UTILITIES | ||||
| ============== | ||||
| 
 | ||||
|  |  | |||
|  | @ -24,8 +24,8 @@ | |||
| 
 | ||||
| # Autoconf | ||||
| AC_PREREQ(2.59) | ||||
| AC_INIT([ntfs-3g],[2017.3.23],[ntfs-3g-devel@lists.sf.net]) | ||||
| LIBNTFS_3G_VERSION="88" | ||||
| AC_INIT([ntfs-3g],[2017.3.23AR.4],[ntfs-3g-devel@lists.sf.net]) | ||||
| LIBNTFS_3G_VERSION="884" | ||||
| AC_CONFIG_SRCDIR([src/ntfs-3g.c]) | ||||
| 
 | ||||
| # Environment | ||||
|  | @ -33,7 +33,7 @@ AC_CANONICAL_HOST | |||
| AC_CANONICAL_TARGET | ||||
| 
 | ||||
| # Automake | ||||
| AM_INIT_AUTOMAKE([${PACKAGE_NAME}], [${PACKAGE_VERSION}]) | ||||
| AM_INIT_AUTOMAKE() | ||||
| AC_CONFIG_HEADERS([config.h]) | ||||
| AC_CONFIG_MACRO_DIR([m4]) | ||||
| AM_MAINTAINER_MODE | ||||
|  | @ -497,7 +497,7 @@ AC_C_BIGENDIAN( | |||
| 	] | ||||
| 	, | ||||
| ) | ||||
| AC_C_CONST | ||||
| # AC_C_CONST | ||||
| AC_C_INLINE | ||||
| AC_TYPE_OFF_T | ||||
| AC_TYPE_SIZE_T | ||||
|  |  | |||
|  | @ -0,0 +1,581 @@ | |||
| # Pass --with externalfuse to compile against system fuse lib | ||||
| # Default is internal fuse-lite. | ||||
| %define with_externalfuse %{?_with_externalfuse:1}%{!?_with_externalfuse:0} | ||||
| 
 | ||||
| # For release candidates | ||||
| # %%global subver -RC | ||||
| 
 | ||||
| %global oldrhel 0 | ||||
| 
 | ||||
| %if 0%{?rhel} | ||||
| %if 0%{?rhel} < 7 | ||||
| %global oldrhel 1 | ||||
| %endif | ||||
| %endif | ||||
| 
 | ||||
| Name:		ntfs-3g | ||||
| Summary:	Linux NTFS userspace driver | ||||
| Version:	2017.3.23AR.4 | ||||
| Release:	1.el7 | ||||
| License:	GPLv2+ | ||||
| Group:		System Environment/Base | ||||
| Source0:	http://jp-andre.pagesperso-orange.fr/%{name}_ntfsprogs-%{version}%{?subver}.tgz | ||||
| %if %{oldrhel} | ||||
| Source1:       20-ntfs-config-write-policy.fdi | ||||
| %endif | ||||
| URL:		http://jp-andre.pagesperso-orange.fr | ||||
| %if %{with_externalfuse} | ||||
| BuildRequires:	fuse-devel | ||||
| Requires:	fuse | ||||
| %endif | ||||
| BuildRequires:	libtool, libattr-devel | ||||
| # ntfsprogs BuildRequires | ||||
| BuildRequires:  libconfig-devel, libuuid-devel | ||||
| Epoch:		2 | ||||
| Provides:	ntfsprogs-fuse = %{epoch}:%{version}-%{release} | ||||
| Obsoletes:	ntfsprogs-fuse | ||||
| Provides:	fuse-ntfs-3g = %{epoch}:%{version}-%{release} | ||||
| 
 | ||||
| %description | ||||
| NTFS-3G is a stable, open source, GPL licensed, POSIX, read/write NTFS  | ||||
| driver for Linux and many other operating systems. It provides safe  | ||||
| handling of the Windows XP, Windows Server 2003, Windows 2000, Windows  | ||||
| Vista, Windows Server 2008 and Windows 7 NTFS file systems. NTFS-3G can  | ||||
| create, remove, rename, move files, directories, hard links, and streams;  | ||||
| it can read and write normal and transparently compressed files, including  | ||||
| streams and sparse files; it can handle special files like symbolic links,  | ||||
| devices, and FIFOs, ACL, extended attributes; moreover it provides full  | ||||
| file access right and ownership support. | ||||
| 
 | ||||
| %package devel | ||||
| Summary:	Development files and libraries for ntfs-3g | ||||
| Group:		Development/Libraries | ||||
| Requires:	%{name} = %{epoch}:%{version}-%{release} | ||||
| Requires:	pkgconfig | ||||
| Provides:	ntfsprogs-devel = %{epoch}:%{version}-%{release} | ||||
| # ntfsprogs-2.0.0-17 was never built. 2.0.0-16 was the last build for that  | ||||
| # standalone package. | ||||
| Obsoletes:	ntfsprogs-devel < 2.0.0-17 | ||||
| 
 | ||||
| %description devel | ||||
| Headers and libraries for developing applications that use ntfs-3g | ||||
| functionality. | ||||
| 
 | ||||
| %package -n ntfsprogs | ||||
| Summary:	NTFS filesystem libraries and utilities | ||||
| Group:		System Environment/Base | ||||
| # We don't really provide this. This code is dead and buried now. | ||||
| Provides:	ntfsprogs-gnomevfs = %{epoch}:%{version}-%{release} | ||||
| Obsoletes:	ntfsprogs-gnomevfs | ||||
| # Needed to fix multilib issue | ||||
| # ntfsprogs-2.0.0-17 was never built. 2.0.0-16 was the last build for that  | ||||
| # standalone package. | ||||
| Obsoletes:	ntfsprogs < 2.0.0-17 | ||||
| 
 | ||||
| %description -n ntfsprogs | ||||
| The ntfsprogs package currently consists of a library and utilities such as  | ||||
| mkntfs, ntfscat, ntfsls, ntfsresize, and ntfsundelete (for a full list of  | ||||
| included utilities see man 8 ntfsprogs after installation). | ||||
| 
 | ||||
| %prep | ||||
| %setup -q -n %{name}_ntfsprogs-%{version}%{?subver} | ||||
| 
 | ||||
| %build | ||||
| CFLAGS="$RPM_OPT_FLAGS -D_FILE_OFFSET_BITS=64" | ||||
| %configure \ | ||||
| 	--disable-static \ | ||||
| 	--disable-ldconfig \ | ||||
| %if 0%{?_with_externalfuse:1} | ||||
| 	--with-fuse=external \ | ||||
| %endif | ||||
| 	--exec-prefix=/ \ | ||||
| %if %{oldrhel} | ||||
| 	--bindir=/bin \ | ||||
| 	--sbindir=/sbin \ | ||||
| 	--libdir=/%{_lib} \ | ||||
| %endif | ||||
| 	--enable-crypto \ | ||||
| 	--enable-extras | ||||
| make %{?_smp_mflags} LIBTOOL=%{_bindir}/libtool | ||||
| 
 | ||||
| %install | ||||
| make LIBTOOL=%{_bindir}/libtool DESTDIR=%{buildroot} install | ||||
| %if %{oldrhel} | ||||
| rm -rf %{buildroot}/%{_lib}/*.la | ||||
| rm -rf %{buildroot}/%{_lib}/*.a | ||||
| %else | ||||
| rm -rf %{buildroot}%{_libdir}/*.la | ||||
| rm -rf %{buildroot}%{_libdir}/*.a | ||||
| %endif | ||||
| 
 | ||||
| %if %{oldrhel} | ||||
| rm -rf %{buildroot}/sbin/mount.ntfs-3g | ||||
| cp -a %{buildroot}/bin/ntfs-3g %{buildroot}/sbin/mount.ntfs-3g | ||||
| %else | ||||
| rm -rf %{buildroot}/%{_sbindir}/mount.ntfs-3g | ||||
| cp -a %{buildroot}/%{_bindir}/ntfs-3g %{buildroot}/%{_sbindir}/mount.ntfs-3g | ||||
| %endif | ||||
| 
 | ||||
| # Actually make some symlinks for simplicity... | ||||
| # ... since we're obsoleting ntfsprogs-fuse | ||||
| %if %{oldrhel} | ||||
| pushd %{buildroot}/bin | ||||
| ln -s ntfs-3g ntfsmount | ||||
| popd | ||||
| pushd %{buildroot}/sbin | ||||
| %else | ||||
| pushd %{buildroot}/%{_bindir} | ||||
| ln -s ntfs-3g ntfsmount | ||||
| popd | ||||
| pushd %{buildroot}/%{_sbindir} | ||||
| %endif | ||||
| ln -s mount.ntfs-3g mount.ntfs-fuse | ||||
| # And since there is no other package in Fedora that provides an ntfs  | ||||
| # mount... | ||||
| ln -s mount.ntfs-3g mount.ntfs | ||||
| popd | ||||
| 
 | ||||
| %if %{oldrhel} | ||||
| # Compat symlinks | ||||
| mkdir -p %{buildroot}%{_bindir} | ||||
| pushd %{buildroot}%{_bindir} | ||||
| ln -s /bin/ntfs-3g ntfs-3g | ||||
| ln -s /bin/ntfsmount ntfsmount | ||||
| popd | ||||
| 
 | ||||
| # Put the .pc file in the right place. | ||||
| mkdir -p %{buildroot}%{_libdir}/pkgconfig/ | ||||
| mv %{buildroot}/%{_lib}/pkgconfig/libntfs-3g.pc %{buildroot}%{_libdir}/pkgconfig/ | ||||
| %else | ||||
| mv %{buildroot}/sbin/* %{buildroot}/%{_sbindir} | ||||
| rmdir %{buildroot}/sbin | ||||
| %endif | ||||
| 
 | ||||
| # We get this on our own, thanks. | ||||
| rm -rf %{buildroot}%{_defaultdocdir}/%{name}/README | ||||
| 
 | ||||
| %if %{oldrhel} | ||||
| mkdir -p %{buildroot}%{_datadir}/hal/fdi/policy/10osvendor/ | ||||
| cp -a %{SOURCE1} %{buildroot}%{_datadir}/hal/fdi/policy/10osvendor/ | ||||
| %endif | ||||
| 
 | ||||
| %post -p /sbin/ldconfig | ||||
| %postun -p /sbin/ldconfig | ||||
| 
 | ||||
| %files | ||||
| %doc AUTHORS ChangeLog COPYING COPYING.LIB CREDITS NEWS README | ||||
| %if %{oldrhel} | ||||
| /sbin/mount.ntfs | ||||
| /sbin/mount.ntfs-3g | ||||
| /sbin/mount.ntfs-fuse | ||||
| /sbin/mount.lowntfs-3g | ||||
| /bin/ntfs-3g | ||||
| /bin/ntfsmount | ||||
| #compat symlinks | ||||
| %else | ||||
| %{_sbindir}/mount.ntfs | ||||
| %{_sbindir}/mount.ntfs-3g | ||||
| %{_sbindir}/mount.ntfs-fuse | ||||
| %{_sbindir}/mount.lowntfs-3g | ||||
| %endif | ||||
| %if %{oldrhel} | ||||
| /bin/ntfs-3g.probe | ||||
| /bin/lowntfs-3g | ||||
| %else | ||||
| %{_bindir}/ntfs-3g.probe | ||||
| %{_bindir}/lowntfs-3g | ||||
| %{_bindir}/ntfs-3g | ||||
| %{_bindir}/ntfsmount | ||||
| %endif | ||||
| %if %{oldrhel} | ||||
| /%{_lib}/libntfs-3g.so.* | ||||
| /%{_lib}/ntfs-3g | ||||
| %else | ||||
| %{_libdir}/libntfs-3g.so.* | ||||
| %{_libdir}/ntfs-3g | ||||
| %endif | ||||
| %{_mandir}/man8/mount.lowntfs-3g.* | ||||
| %{_mandir}/man8/mount.ntfs-3g.* | ||||
| %{_mandir}/man8/ntfs-3g* | ||||
| %if %{oldrhel} | ||||
| %{_datadir}/hal/fdi/policy/10osvendor/20-ntfs-config-write-policy.fdi | ||||
| %endif | ||||
| 
 | ||||
| %files devel | ||||
| %{_includedir}/ntfs-3g/ | ||||
| %if %{oldrhel} | ||||
| /%{_lib}/libntfs-3g.so | ||||
| %else | ||||
| %{_libdir}/libntfs-3g.so | ||||
| %endif | ||||
| %{_libdir}/pkgconfig/libntfs-3g.pc | ||||
| 
 | ||||
| %files -n ntfsprogs | ||||
| %doc AUTHORS COPYING COPYING.LIB CREDITS ChangeLog NEWS README | ||||
| %if %{oldrhel} | ||||
| /bin/ntfscat | ||||
| /bin/ntfscluster | ||||
| /bin/ntfscmp | ||||
| /bin/ntfsfix | ||||
| /bin/ntfsinfo | ||||
| /bin/ntfsls | ||||
| %else | ||||
| %{_bindir}/ntfscat | ||||
| %{_bindir}/ntfscluster | ||||
| %{_bindir}/ntfscmp | ||||
| %{_bindir}/ntfsfix | ||||
| %{_bindir}/ntfsinfo | ||||
| %{_bindir}/ntfsls | ||||
| %endif | ||||
| %if %{oldrhel} | ||||
| /bin/ntfsdecrypt | ||||
| /bin/ntfstruncate | ||||
| /bin/ntfswipe | ||||
| /sbin/fsck.ntfs | ||||
| /sbin/mkfs.ntfs | ||||
| /sbin/mkntfs | ||||
| /sbin/ntfsclone | ||||
| /sbin/ntfscp | ||||
| /sbin/ntfslabel | ||||
| /sbin/ntfsresize | ||||
| /sbin/ntfsundelete | ||||
| %else | ||||
| %{_bindir}/ntfsdecrypt | ||||
| %{_bindir}/ntfsrecover | ||||
| %{_bindir}/ntfssecaudit | ||||
| %{_bindir}/ntfstruncate | ||||
| %{_bindir}/ntfsusermap | ||||
| %{_bindir}/ntfswipe | ||||
| %{_sbindir}/mkfs.ntfs | ||||
| %{_sbindir}/mkntfs | ||||
| %{_sbindir}/ntfsclone | ||||
| %{_sbindir}/ntfscp | ||||
| %{_sbindir}/ntfslabel | ||||
| %{_sbindir}/ntfsresize | ||||
| %{_sbindir}/ntfsundelete | ||||
| %endif | ||||
| %{_mandir}/man8/mkntfs.8* | ||||
| %{_mandir}/man8/mkfs.ntfs.8* | ||||
| %{_mandir}/man8/ntfs[^m][^o]*.8* | ||||
| %exclude %{_mandir}/man8/ntfs-3g* | ||||
| 
 | ||||
| %changelog | ||||
| * Fri Mar  1 2019 Jean-Pierre Andre 2017.3.23AR.4 | ||||
| - adapted to advanced ntfs-3g and basic ntfsprogs | ||||
| 
 | ||||
| * Wed Jun 17 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2:2015.3.14-3 | ||||
| - Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild | ||||
| 
 | ||||
| * Fri May 22 2015 Tom Callaway <spot@fedoraproject.org> 2:2015.3.14-2 | ||||
| - fix CVE-2015-3202 | ||||
| 
 | ||||
| * Tue Apr  7 2015 Tom Callaway <spot@fedoraproject.org> 2:2015.3.14-1 | ||||
| - update to 2015.3.14 | ||||
| 
 | ||||
| * Sat Feb 21 2015 Till Maas <opensource@till.name> - 2:2014.2.15-8 | ||||
| - Rebuilt for Fedora 23 Change | ||||
|   https://fedoraproject.org/wiki/Changes/Harden_all_packages_with_position-independent_code | ||||
| 
 | ||||
| * Tue Jan 13 2015 Tom Callaway <spot@fedoraproject.org> - 2:2014.2.15-7 | ||||
| - add patch to ignore -s option | ||||
| 
 | ||||
| * Sun Aug 17 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2:2014.2.15-6 | ||||
| - Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild | ||||
| 
 | ||||
| * Tue Aug  5 2014 Richard W.M. Jones <rjones@redhat.com> - 2:2014.2.15-5 | ||||
| - Add upstream patch to fix fstrim so it works on partitions as well | ||||
|   as whole disks. | ||||
| 
 | ||||
| * Thu Jul 31 2014 Richard W.M. Jones <rjones@redhat.com> - 2:2014.2.15-4 | ||||
| - Upstream patches which add fstrim support. | ||||
| 
 | ||||
| * Sat Jun 07 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2:2014.2.15-3 | ||||
| - Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild | ||||
| 
 | ||||
| * Thu Apr 24 2014 Tomáš Mráz <tmraz@redhat.com> - 2:2014.2.15-2 | ||||
| - Rebuild for new libgcrypt | ||||
| 
 | ||||
| * Wed Feb 26 2014 Tom Callaway <spot@fedoraproject.org> 2:2014.2.15-1 | ||||
| - update to 2014.2.15 | ||||
| 
 | ||||
| * Sat Aug 03 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2:2013.1.13-6 | ||||
| - Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild | ||||
| 
 | ||||
| * Tue May 28 2013 Tom Callaway <spot@fedoraproject.org> - 2:2013.1.13-5 | ||||
| - fix bug preventing reads on compressed files on windows 8 partitions (bz967301) | ||||
| 
 | ||||
| * Mon May  6 2013 Tom Callaway <spot@fedoraproject.org> - 2:2013.1.13-4 | ||||
| - apply fixes from upstream for issue with 4K sector drives (bz951603)  | ||||
|   and truncated check for Interix types on a 32-bit CPU (bz958681) | ||||
| 
 | ||||
| * Thu Feb  7 2013 Tom Callaway <spot@fedoraproject.org> - 2:2013.1.13-3 | ||||
| - drop redundant manpages from ntfsprogs subpackage | ||||
| 
 | ||||
| * Thu Jan 31 2013 Tom Callaway <spot@fedoraproject.org> - 2:2013.1.13-2 | ||||
| - drop hal files, since hal is very dead | ||||
| 
 | ||||
| * Tue Jan 22 2013 Richard W.M. Jones <rjones@redhat.com> - 2:2013.1.13-1 | ||||
| - New upstream version 2013.1.13 (RHBZ#902729). | ||||
| - Drop ntfs-3g-junction-point-fix.patch (now upstream). | ||||
| - Drop Windows 8 patches x 2 (both now upstream). | ||||
| - Remove obsolete patches from Fedora git repository. | ||||
| - Fix .gitignore file. | ||||
| 
 | ||||
| * Mon Oct 15 2012 Tom Callaway <spot@fedoraproject.org> - 2:2012.1.15-5 | ||||
| - Limit obsoletes to last ntfsprogs-* versions ( < 2.0.0-17 ) to | ||||
|   minimize yum churn (where it would obsolete itself on every upgrade) | ||||
|   BZ#863641 | ||||
| 
 | ||||
| * Thu Oct  4 2012 Tom Callaway <spot@fedoraproject.org> - 2:2012.1.15-4 | ||||
| - add patches from upstream git to add a level of safety in the case where windows 8 | ||||
|   leaves the NTFS filesystem in an unsafe state and Linux access could result in data loss. | ||||
|   Basically, with these patches, Linux will refuse to mount the ntfs partition. For the details | ||||
|   refer to: https://bugzilla.redhat.com/show_bug.cgi?id=859373 | ||||
| 
 | ||||
| * Sun Aug 19 2012 Tom Callaway <spot@fedoraproject.org> - 2:2012.1.15-3 | ||||
| - apply upstream fix for junction points (bz849332) | ||||
| 
 | ||||
| * Fri Jul 20 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2:2012.1.15-2 | ||||
| - Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild | ||||
| 
 | ||||
| * Fri Feb 10 2012 Tom Callaway <spot@fedoraproject.org> 2:2012.1.15-1 | ||||
| - update to 2012.1.15 | ||||
| 
 | ||||
| * Wed Feb  1 2012 Kay Sievers <kay@redhat.com> 2:2011.10.9-3 | ||||
| - install everything in /usr | ||||
|   https://fedoraproject.org/wiki/Features/UsrMove | ||||
| 
 | ||||
| * Fri Jan 13 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2:2011.10.9-2 | ||||
| - Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild | ||||
| 
 | ||||
| * Tue Oct 11 2011 Tom Callaway <spot@fedoraproject.org> - 2:2011.10.9-1 | ||||
| - 2011.10.9-RC | ||||
| - patch ntfsck to return 0 instead of 1 on unsupported filesystem cases | ||||
| 
 | ||||
| * Mon Sep 12 2011 Tom Callaway <spot@fedoraproject.org> - 2:2011.4.12-5 | ||||
| - fix ntfsck symlink (thanks to Chris Smart for catching it) | ||||
| 
 | ||||
| * Wed Sep  7 2011 Tom Callaway <spot@fedoraproject.org> - 2:2011.4.12-4 | ||||
| - fix issue preventing some volume types from not working properly (bz735862) | ||||
| - create fsck.ntfs symlink to ntfsck (bz735612). | ||||
| - apply cleanups from git trunk for ntfsck (bz 706638) | ||||
| - apply cleanups from git trunk for ntfsfix (bz 711662, 723562) | ||||
| 
 | ||||
| * Mon May  9 2011 Tom Callaway <spot@fedoraproject.org> - 2:2011.4.12-3 | ||||
| - add Obsoletes to resolve multi-lib upgrade issue (bz702671) | ||||
| 
 | ||||
| * Mon Apr 25 2011 Tom Callaway <spot@fedoraproject.org> - 2:2011.4.12-2 | ||||
| - add --enable-extras flag (and use it) to ensure proper binary installation | ||||
| 
 | ||||
| * Thu Apr 14 2011 Tom Callaway <spot@fedoraproject.org> - 2:2011.4.12-1 | ||||
| - update to 2011.4.12 | ||||
| - pickup ntfsprogs and obsolete the old separate packages | ||||
| 
 | ||||
| * Tue Feb 08 2011 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2:2011.1.15-2 | ||||
| - Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild | ||||
| 
 | ||||
| * Tue Jan 25 2011 Tom Callaway <spot@fedoraproject.org> - 2:2011.1.15-1 | ||||
| - update to 2011.1.15 | ||||
| 
 | ||||
| * Mon Oct 11 2010 Tom "spot" Callaway <tcallawa@redhat.com> - 2:2010.10.2-1 | ||||
| - update to 2010.10.2, all patches merged upstream | ||||
| 
 | ||||
| * Thu Sep  9 2010 Tom "spot" Callaway <tcallawa@redhat.com> - 2:2010.8.8-2 | ||||
| - add support for context= mount option (Till Maas) (bz502946) | ||||
| 
 | ||||
| * Mon Aug  9 2010 Tom "spot" Callaway <tcallawa@redhat.com> - 2:2010.8.8-1 | ||||
| - update to 2010.8.8 | ||||
| 
 | ||||
| * Fri Jul  9 2010 Tom "spot" Callaway <tcallawa@redhat.com> - 2:2010.6.31-1 | ||||
| - update to 2010.6.31-RC | ||||
| 
 | ||||
| * Fri Jul  9 2010 Tom "spot" Callaway <tcallawa@redhat.com> - 2:2010.5.22-1 | ||||
| - update to 2010.5.22 | ||||
| 
 | ||||
| * Tue May 18 2010 Tom "spot" Callaway <tcallawa@redhat.com> - 2:2010.5.16-1 | ||||
| - update to 2010.5.16 | ||||
| - fix makefile to build secaudit/usermap tools | ||||
| 
 | ||||
| * Mon Mar  8 2010 Tom "spot" Callaway <tcallawa@redhat.com> - 2:2010.3.6-1 | ||||
| - update to 2010.3.6 | ||||
| 
 | ||||
| * Mon Feb 15 2010 Tom "spot" Callaway <tcallawa@redhat.com> - 2:2010.2.6-1 | ||||
| - update to 2010.2.6-RC | ||||
| - fix summary text | ||||
| 
 | ||||
| * Wed Jan 20 2010 Tom "spot" Callaway <tcallawa@redhat.com> - 2:2010.1.16-1 | ||||
| - update to 2010.1.16 | ||||
| 
 | ||||
| * Fri Nov 20 2009 Tom "spot" Callaway <tcallawa@redhat.com> - 2:2009.11.14-2 | ||||
| - missing BuildRequires: libattr-devel | ||||
| 
 | ||||
| * Fri Nov 20 2009 Tom "spot" Callaway <tcallawa@redhat.com> - 2:2009.11.14-1 | ||||
| - update to 2009.11.14 | ||||
| 
 | ||||
| * Fri Oct 30 2009 Tom "spot" Callaway <tcallawa@redhat.com> - 2:2009.10.5-0.1.RC | ||||
| - bump to 2009.10.5-RC | ||||
| 
 | ||||
| * Thu Sep 17 2009 Peter Lemenkov <lemenkov@gmail.com> - 2:2009.4.4-3 | ||||
| - Rebuilt with new fuse | ||||
| 
 | ||||
| * Sat Jul 25 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2:2009.4.4-2 | ||||
| - Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild | ||||
| 
 | ||||
| * Fri Apr  3 2009 Tom "spot" Callaway <tcallawa@redhat.com> - 2:2009.4.4-1 | ||||
| - update to 4.4, patch for mount issue merged | ||||
| 
 | ||||
| * Mon Mar 30 2009 Tom "spot" Callaway <tcallawa@redhat.com> - 2:2009.3.8-2 | ||||
| - Patch from upstream provided as temporary workaround for bz 486619 | ||||
| 
 | ||||
| * Thu Mar 26 2009 Tom "spot" Callaway <tcallawa@redhat.com> - 2:2009.3.8-1 | ||||
| - update to 2009.3.8 | ||||
| 
 | ||||
| * Wed Feb 25 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2:2009.2.1-3 | ||||
| - Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild | ||||
| 
 | ||||
| * Mon Feb 16 2009 Tom "spot" Callaway <tcallawa@redhat.com> - 2:2009.2.1-2 | ||||
| - update fdi to fix nautilus mount bug | ||||
| 
 | ||||
| * Thu Feb 12 2009 Tom "spot" Callaway <tcallawa@redhat.com> - 2:2009.2.1-1 | ||||
| - update to 2009.2.1 | ||||
| 
 | ||||
| * Fri Jan 30 2009 Tom "spot" Callaway <tcallawa@redhat.com> - 2:2009.1.1-1 | ||||
| - new release, new versioning scheme from upstream | ||||
| 
 | ||||
| * Thu Jan  8 2009 Tom "spot" Callaway <tcallawa@redhat.com> - 2:1.5222-0.2.RC | ||||
| - move pkgconfig Requires to -devel package where it belongs | ||||
| 
 | ||||
| * Mon Dec 22 2008 Tom "spot" Callaway <tcallawa@redhat.com> - 2:1.5222-0.1.RC | ||||
| - 1.5222-RC | ||||
| 
 | ||||
| * Tue Dec  2 2008 Tom "spot" Callaway <tcallawa@redhat.com> - 2:1.5130-1 | ||||
| - update to 1.5130 | ||||
| 
 | ||||
| * Wed Oct 29 2008 Tom "spot" Callaway <tcallawa@redhat.com> - 2:1.5012-4 | ||||
| - fix hal file to properly ignore internal recovery partitions | ||||
| 
 | ||||
| * Wed Oct 29 2008 Tom "spot" Callaway <tcallawa@redhat.com> - 2:1.5012-3 | ||||
| - fix hal file to cover all mount cases (thanks to Richard Hughes) | ||||
| 
 | ||||
| * Mon Oct 20 2008 Tom "spot" Callaway <tcallawa@redhat.com> - 2:1.5012-2 | ||||
| - add fdi file to enable hal automounting | ||||
| 
 | ||||
| * Wed Oct 15 2008 Tom "spot" Callaway <tcallawa@redhat.com> - 2:1.5012-1 | ||||
| - update to 1.5012 (same code as 1.2926-RC) | ||||
| 
 | ||||
| * Mon Sep 22 2008 Tom "spot" Callaway <tcallawa@redhat.com> - 2:1.2926-0.1.RC | ||||
| - update to 1.2926-RC (rawhide, F10) | ||||
| 
 | ||||
| * Fri Aug 22 2008 Tom "spot" Callaway <tcallawa@redhat.com> - 2:1.2812-1 | ||||
| - update to 1.2812 | ||||
| 
 | ||||
| * Sat Jul 12 2008 Tom "spot" Callaway <tcallawa@redhat.com> - 2:1.2712-1 | ||||
| - update to 1.2712 | ||||
| 
 | ||||
| * Mon May  5 2008 Tom "spot" Callaway <tcallawa@redhat.com> - 2:1.2506-1 | ||||
| - update to 1.2506 | ||||
| 
 | ||||
| * Tue Apr 22 2008 Tom "spot" Callaway <tcallawa@redhat.com> - 2:1.2412-1 | ||||
| - update to 1.2412 | ||||
| 
 | ||||
| * Mon Mar 10 2008 Tom "spot" Callaway <tcallawa@redhat.com> - 2:1.2310-2 | ||||
| - update sources | ||||
| 
 | ||||
| * Mon Mar 10 2008 Tom "spot" Callaway <tcallawa@redhat.com> - 2:1.2310-1 | ||||
| - update to 1.2310 | ||||
| - make -n a noop (bz 403291) | ||||
| 
 | ||||
| * Tue Feb 26 2008 Tom "spot" Callaway <tcallawa@redhat.com> - 2:1.2216-3 | ||||
| - rebuild against fixed gcc (PR35264, bugzilla 433546) | ||||
| 
 | ||||
| * Tue Feb 19 2008 Fedora Release Engineering <rel-eng@fedoraproject.org> - 2:1.2216-2 | ||||
| - Autorebuild for GCC 4.3 | ||||
| 
 | ||||
| * Mon Feb 18 2008 Tom "spot" Callaway <tcallawa@redhat.com> 2:1.2216-1 | ||||
| - update to 1.2216 | ||||
| 
 | ||||
| * Tue Nov 20 2007 Tom "spot" Callaway <tcallawa@redhat.com> 2:1.1120-1 | ||||
| - bump to 1.1120 | ||||
| - default to fuse-lite (internal to ntfs-3g), but enable --with externalfuse  | ||||
|   as an option | ||||
| 
 | ||||
| * Thu Nov  8 2007 Tom "spot" Callaway <tcallawa@redhat.com> 2:1.1104-1 | ||||
| - bump to 1.1104 | ||||
| 
 | ||||
| * Mon Oct 29 2007 Tom "spot" Callaway <tcallawa@redhat.com> 2:1.1030-1 | ||||
| - bump to 1.1030 | ||||
| 
 | ||||
| * Sat Oct  6 2007 Tom "spot" Callaway <tcallawa@redhat.com> 2:1.1004-1 | ||||
| - bump to 1.1004 | ||||
| 
 | ||||
| * Thu Sep 20 2007 Tom "spot" Callaway <tcallawa@redhat.com> 2:1.913-2 | ||||
| - don't set /sbin/mount.ntfs-3g setuid | ||||
| 
 | ||||
| * Mon Sep 17 2007 Tom "spot" Callaway <tcallawa@redhat.com> 2:1.913-1 | ||||
| - bump to 1.913 | ||||
| 
 | ||||
| * Sun Aug 26 2007 Tom "spot" Callaway <tcallawa@redhat.com> 2:1.826-1 | ||||
| - bump to 1.826 | ||||
| - glibc27 patch is upstreamed | ||||
| 
 | ||||
| * Fri Aug 24 2007 Tom "spot" Callaway <tcallawa@redhat.com> 2:1.810-1 | ||||
| - bump to 1.810 | ||||
| - fix license tag | ||||
| - rebuild for ppc32 | ||||
| 
 | ||||
| * Sun Jul 22 2007 Tom "spot" Callaway <tcallawa@redhat.com> 2:1.710-1 | ||||
| - bump to 1.710 | ||||
| - add compat symlinks | ||||
| 
 | ||||
| * Wed Jun 27 2007 Tom "spot" Callaway <tcallawa@redhat.com> 2:1.616-1 | ||||
| - bump to 1.616 | ||||
| 
 | ||||
| * Tue May 15 2007 Tom "spot" Callaway <tcallawa@redhat.com> 2:1.516-1 | ||||
| - bump to 1.516 | ||||
| - fix bugzilla 232031 | ||||
| 
 | ||||
| * Sun Apr 15 2007 Tom "spot" Callaway <tcallawa@redhat.com> 2:1.417-1 | ||||
| - bump to 1.417 | ||||
| 
 | ||||
| * Sun Apr 15 2007 Tom "spot" Callaway <tcallawa@redhat.com> 2:1.416-1 | ||||
| - bump to 1.416 | ||||
| - drop patch0, upstreamed | ||||
| 
 | ||||
| * Wed Apr  4 2007 Tom "spot" Callaway <tcallawa@redhat.com> 2:1.328-2 | ||||
| - allow non-root users to mount/umount ntfs volumes (Laszlo Dvornik) | ||||
| 
 | ||||
| * Sat Mar 31 2007 Tom "spot" Callaway <tcallawa@redhat.com> 2:1.328-1 | ||||
| - bump to 1.328 | ||||
| - drop patch, use --disable-ldconfig instead | ||||
| 
 | ||||
| * Wed Feb 21 2007 Tom "spot" Callaway <tcallawa@redhat.com> 2:1.0-1 | ||||
| - 1.0 release! | ||||
| 
 | ||||
| * Fri Jan 19 2007 Tom "spot" Callaway <tcallawa@redhat.com> 2:0-0.9.20070118 | ||||
| - symlink to mount.ntfs | ||||
| 
 | ||||
| * Wed Jan 17 2007 Tom "spot" Callaway <tcallawa@redhat.com> 2:0-0.8.20070118 | ||||
| - bump to 20070118 | ||||
| 
 | ||||
| * Wed Jan 17 2007 Tom "spot" Callaway <tcallawa@redhat.com> 2:0-0.7.20070116 | ||||
| - bump to latest version for all active dists | ||||
| 
 | ||||
| * Wed Jan  3 2007 Tom "spot" Callaway <tcallawa@redhat.com> 1:0-0.6.20070102 | ||||
| - bump to latest version (note that upstream fixed their date mistake) | ||||
| 
 | ||||
| * Wed Nov  1 2006 Tom "spot" Callaway <tcallawa@redhat.com> 1:0-0.5.20070920 | ||||
| - add an obsoletes for ntfsprogs-fuse | ||||
| - make some convenience symlinks | ||||
| 
 | ||||
| * Wed Oct 25 2006 Tom "spot" Callaway <tcallawa@redhat.com> 1:0-0.4.20070920 | ||||
| - add some extra Provides | ||||
| 
 | ||||
| * Mon Oct 16 2006 Tom "spot" Callaway <tcallawa@redhat.com> 1:0-0.3.20070920 | ||||
| - add explicit Requires on fuse | ||||
| 
 | ||||
| * Mon Oct 16 2006 Tom "spot" Callaway <tcallawa@redhat.com> 1:0-0.2.20070920 | ||||
| - fixed versioning (bumped epoch, since it now shows as older) | ||||
| - change sbin symlink to actual copy to be safe | ||||
| 
 | ||||
| * Sun Oct 15 2006 Tom "spot" Callaway <tcallawa@redhat.com> 0.1.20070920-1 | ||||
| - Initial package for Fedora Extras | ||||
							
								
								
									
										372
									
								
								src/lowntfs-3g.c
								
								
								
								
							
							
						
						
									
										372
									
								
								src/lowntfs-3g.c
								
								
								
								
							|  | @ -518,99 +518,36 @@ static void set_fuse_error(int *err) | |||
| } | ||||
| 
 | ||||
| #if 0 && (defined(__APPLE__) || defined(__DARWIN__)) /* Unfinished. */
 | ||||
| static int ntfs_macfuse_getxtimes(const char *org_path, | ||||
| 		struct timespec *bkuptime, struct timespec *crtime) | ||||
| 
 | ||||
| static void ntfs_macfuse_getxtimes(fuse_req_t req, fuse_ino_t ino, | ||||
| 			struct fuse_file_info *fi __attribute__((unused))) | ||||
| { | ||||
| 	int res = 0; | ||||
| 	ntfs_inode *ni; | ||||
| 	char *path = NULL; | ||||
| 	ntfschar *stream_name; | ||||
| 	int stream_name_len; | ||||
| 	struct timespec bkuptime; | ||||
| 	struct timespec crtime; | ||||
| 
 | ||||
| 	stream_name_len = ntfs_fuse_parse_path(org_path, &path, &stream_name); | ||||
| 	if (stream_name_len < 0) | ||||
| 		return stream_name_len; | ||||
| 	memset(bkuptime, 0, sizeof(struct timespec)); | ||||
| 	memset(crtime, 0, sizeof(struct timespec)); | ||||
| 	ni = ntfs_pathname_to_inode(ctx->vol, NULL, path); | ||||
| 	memset(&bkuptime, 0, sizeof(struct timespec)); | ||||
| 	memset(&crtime, 0, sizeof(struct timespec)); | ||||
| 	ni = ntfs_inode_open(ctx->vol, INODE(ino)); | ||||
| 	if (!ni) { | ||||
| 		res = -errno; | ||||
| 		goto exit; | ||||
| 	} else { | ||||
| 		/* We have no backup timestamp in NTFS. */ | ||||
| 		crtime = ntfs2timespec(ni->creation_time); | ||||
| 		if (ntfs_inode_close(ni)) | ||||
| 			set_fuse_error(&res); | ||||
| 	} | ||||
|          | ||||
| 	/* We have no backup timestamp in NTFS. */ | ||||
| 	crtime->tv_sec = ni->creation_time; | ||||
| exit: | ||||
| 	if (ntfs_inode_close(ni)) | ||||
| 		set_fuse_error(&res); | ||||
| 	free(path); | ||||
| 	if (stream_name_len) | ||||
| 		free(stream_name); | ||||
| 	return res; | ||||
| 	if (res < 0) | ||||
| 		fuse_reply_err(req, -res); | ||||
| 	else | ||||
| 		fuse_reply_xtimes(req, &bkuptime, &crtime); | ||||
| } | ||||
| 
 | ||||
| int ntfs_macfuse_setcrtime(const char *path, const struct timespec *tv) | ||||
| { | ||||
| 	ntfs_inode *ni; | ||||
| 	int res = 0; | ||||
| 
 | ||||
| 	if (ntfs_fuse_is_named_data_stream(path)) | ||||
| 		return -EINVAL; /* n/a for named data streams. */ | ||||
| 	ni = ntfs_pathname_to_inode(ctx->vol, NULL, path); | ||||
| 	if (!ni) | ||||
| 		return -errno; | ||||
|          | ||||
| 	if (tv) { | ||||
| 		ni->creation_time = tv->tv_sec; | ||||
| 		ntfs_fuse_update_times(ni, NTFS_UPDATE_CTIME); | ||||
| 	} | ||||
| 
 | ||||
| 	if (ntfs_inode_close(ni)) | ||||
| 		set_fuse_error(&res); | ||||
| 	return res; | ||||
| } | ||||
| 
 | ||||
| int ntfs_macfuse_setbkuptime(const char *path, const struct timespec *tv) | ||||
| { | ||||
| 	ntfs_inode *ni; | ||||
| 	int res = 0; | ||||
|          | ||||
| 	if (ntfs_fuse_is_named_data_stream(path)) | ||||
| 		return -EINVAL; /* n/a for named data streams. */ | ||||
| 	ni = ntfs_pathname_to_inode(ctx->vol, NULL, path); | ||||
| 	if (!ni) | ||||
| 		return -errno; | ||||
|          | ||||
| 	/* 
 | ||||
| 	 * Only pretending to set backup time successfully to please the APIs of | ||||
| 	 * Mac OS X. In reality, NTFS has no backup time. | ||||
| 	 */ | ||||
|          | ||||
| 	if (ntfs_inode_close(ni)) | ||||
| 		set_fuse_error(&res); | ||||
| 	return res; | ||||
| } | ||||
| 
 | ||||
| int ntfs_macfuse_setchgtime(const char *path, const struct timespec *tv) | ||||
| { | ||||
| 	ntfs_inode *ni; | ||||
| 	int res = 0; | ||||
| 
 | ||||
| 	if (ntfs_fuse_is_named_data_stream(path)) | ||||
| 		return -EINVAL; /* n/a for named data streams. */ | ||||
| 	ni = ntfs_pathname_to_inode(ctx->vol, NULL, path); | ||||
| 	if (!ni) | ||||
| 		return -errno; | ||||
| 
 | ||||
| 	if (tv) { | ||||
| 		ni->last_mft_change_time = tv->tv_sec; | ||||
| 		ntfs_fuse_update_times(ni, 0); | ||||
| 	} | ||||
| 
 | ||||
| 	if (ntfs_inode_close(ni)) | ||||
| 		set_fuse_error(&res); | ||||
| 	return res; | ||||
| } | ||||
| #endif /* defined(__APPLE__) || defined(__DARWIN__) */ | ||||
| 
 | ||||
| static void ntfs_init(void *userdata __attribute__((unused)), | ||||
|  | @ -2194,6 +2131,277 @@ static void ntfs_fuse_setattr(fuse_req_t req, fuse_ino_t ino, struct stat *attr, | |||
| 		fuse_reply_attr(req, &stbuf, ATTR_TIMEOUT); | ||||
| } | ||||
| 
 | ||||
| #if 0 && (defined(__APPLE__) || defined(__DARWIN__)) /* Unfinished. */
 | ||||
| 
 | ||||
| #if defined(HAVE_UTIMENSAT) & defined(FUSE_SET_ATTR_ATIME_NOW) | ||||
| 
 | ||||
| 	/*
 | ||||
| 	 *		utimens_x (MacOsX) | ||||
| 	 * | ||||
| 	 *	This is much similar to ntfs_fuse_utimens() | ||||
| 	 */ | ||||
| 
 | ||||
| static int ntfs_fuse_utimens_x(struct SECURITY_CONTEXT *scx, fuse_ino_t ino, | ||||
| 		struct setattr_x *stin, struct stat *stbuf, int to_set) | ||||
| { | ||||
| 	ntfs_inode *ni; | ||||
| 	int res = 0; | ||||
| 
 | ||||
| 	ni = ntfs_inode_open(ctx->vol, INODE(ino)); | ||||
| 	if (!ni) | ||||
| 		return -errno; | ||||
| 
 | ||||
| 			/* no check or update if both UTIME_OMIT */ | ||||
| 	if (to_set & (FUSE_SET_ATTR_ATIME | ||||
| 			+ FUSE_SET_ATTR_MTIME | ||||
| 			+ FUSE_SET_ATTR_BKUPTIME | ||||
| 			+ FUSE_SET_ATTR_CHGTIME | ||||
| 			+ FUSE_SET_ATTR_CRTIME)) { | ||||
| #if !KERNELPERMS | (POSIXACLS & !KERNELACLS) | ||||
| 		if (ntfs_allowed_as_owner(scx, ni) | ||||
| 		    || ((to_set & FUSE_SET_ATTR_ATIME_NOW) | ||||
| 			&& (to_set & FUSE_SET_ATTR_MTIME_NOW) | ||||
| 			&& ntfs_allowed_access(scx, ni, S_IWRITE))) { | ||||
| #endif | ||||
| 			ntfs_time_update_flags mask = 0; | ||||
| 
 | ||||
| 			if (to_set & FUSE_SET_ATTR_ATIME_NOW) | ||||
| 				mask |= NTFS_UPDATE_ATIME; | ||||
| 			else | ||||
| 				if (to_set & FUSE_SET_ATTR_ATIME) | ||||
| 					ni->last_access_time | ||||
| 						= timespec2ntfs(stin->acctime); | ||||
| 			if (to_set & FUSE_SET_ATTR_MTIME_NOW) | ||||
| 				mask |= NTFS_UPDATE_MTIME; | ||||
| 			else | ||||
| 				if (to_set & FUSE_SET_ATTR_MTIME) | ||||
| 					ni->last_data_change_time  | ||||
| 						= timespec2ntfs(stin->modtime); | ||||
| 			if (to_set & FUSE_SET_ATTR_CRTIME) | ||||
| 				ni->creation_time  | ||||
| 					= timespec2ntfs(stin->crtime); | ||||
| 			if (to_set & FUSE_SET_ATTR_BKUPTIME) { | ||||
| 				/* does not exist */ | ||||
| 			} | ||||
| 			if (to_set & FUSE_SET_ATTR_CHGTIME) { | ||||
| 				ni->last_mft_change_time  | ||||
| 					= timespec2ntfs(stin->chgtime); | ||||
| 			} else | ||||
| 				mask |= FUSE_SET_ATTR_CTIME; | ||||
| 			ntfs_inode_update_times(ni, mask); | ||||
| #if !KERNELPERMS | (POSIXACLS & !KERNELACLS) | ||||
| 		} else | ||||
| 			res = -errno; | ||||
| #endif | ||||
| 	} | ||||
| 	if (!res) | ||||
| 		res = ntfs_fuse_getstat(scx, ni, stbuf); | ||||
| 	if (ntfs_inode_close(ni)) | ||||
| 		set_fuse_error(&res); | ||||
| 	return res; | ||||
| } | ||||
| 
 | ||||
| #else /* defined(HAVE_UTIMENSAT) & defined(FUSE_SET_ATTR_ATIME_NOW) */ | ||||
| 
 | ||||
| 	/*
 | ||||
| 	 *		utime_x (MacOsX) | ||||
| 	 * | ||||
| 	 *	This is somewhat similar to ntfs_fuse_utime() | ||||
| 	 * | ||||
| 	 *	TODO : check whether there is any need for this function | ||||
| 	 *	HAVE_UTIMENSAT may be always defined on MacOsX | ||||
| 	 */ | ||||
| 
 | ||||
| static int ntfs_fuse_utime_x(struct SECURITY_CONTEXT *scx, fuse_ino_t ino, | ||||
| 		struct setattr_x *stin, struct stat *stbuf) | ||||
| { | ||||
| 	ntfs_inode *ni; | ||||
| 	int res = 0; | ||||
| 	ntfs_time_update_flags mask = 0; | ||||
| #if !KERNELPERMS | (POSIXACLS & !KERNELACLS) | ||||
| 	BOOL ownerok; | ||||
| 	BOOL writeok; | ||||
| #endif | ||||
| 
 | ||||
| 	ni = ntfs_inode_open(ctx->vol, INODE(ino)); | ||||
| 	if (!ni) | ||||
| 		return -errno; | ||||
|          | ||||
| #if !KERNELPERMS | (POSIXACLS & !KERNELACLS) | ||||
| 	ownerok = ntfs_allowed_as_owner(scx, ni); | ||||
| 	if (stin) { | ||||
| 		/*
 | ||||
| 		 * fuse never calls with a NULL buf and we do not | ||||
| 		 * know whether the specific condition can be applied | ||||
| 		 * So we have to accept updating by a non-owner having | ||||
| 		 * write access. | ||||
| 		 */ | ||||
| 		writeok = !ownerok | ||||
| 			&& (stin->st_atime == stin->st_mtime) | ||||
| 			&& ntfs_allowed_access(scx, ni, S_IWRITE); | ||||
| 			/* Must be owner */ | ||||
| 		if (!ownerok && !writeok) | ||||
| 			res = (stin->acctime.tv_sec == stin->modtime.tv_sec | ||||
| 					? -EACCES : -EPERM); | ||||
| 		else { | ||||
| 			if (to_set & FUSE_SET_ATTR_ATIME) | ||||
| 				ni->last_access_time | ||||
| 					= timespec2ntfs(stin->acctime); | ||||
| 			if (to_set & FUSE_SET_ATTR_CTIME) | ||||
| 				ni->last_data_change_time | ||||
| 					= timespec2ntfs(stin->modtime); | ||||
| 			if (to_set & FUSE_SET_ATTR_CHGTIME) | ||||
| 				ni->last_mft_change_time | ||||
| 					= timespec2ntfs(stin->chgtime); | ||||
| 			else | ||||
| 				flags |= NTFS_UPDATE_CTIME; | ||||
| 			if (to_set & FUSE_SET_ATTR_CRTIME) | ||||
| 				ni->creation_time | ||||
| 					= timespec2ntfs(stin->crtime); | ||||
| 			ntfs_fuse_update_times(ni, mask); | ||||
| 		} | ||||
| 	} else { | ||||
| 			/* Must be owner or have write access */ | ||||
| 		writeok = !ownerok | ||||
| 			&& ntfs_allowed_access(scx, ni, S_IWRITE); | ||||
| 		if (!ownerok && !writeok) | ||||
| 			res = -EACCES; | ||||
| 		else | ||||
| 			ntfs_inode_update_times(ni, NTFS_UPDATE_AMCTIME); | ||||
| 	} | ||||
| #else | ||||
| 	if (stin) { | ||||
| 		if (to_set & FUSE_SET_ATTR_ATIME) | ||||
| 			ni->last_access_time | ||||
| 				= timespec2ntfs(stin->acctime); | ||||
| 		if (to_set & FUSE_SET_ATTR_CTIME) | ||||
| 			ni->last_data_change_time | ||||
| 				= timespec2ntfs(stin->modtime); | ||||
| 		if (to_set & FUSE_SET_ATTR_CHGTIME) | ||||
| 			ni->last_mft_change_time | ||||
| 				= timespec2ntfs(stin->chgtime); | ||||
| 		else | ||||
| 			flags |= NTFS_UPDATE_CTIME; | ||||
| 		if (to_set & FUSE_SET_ATTR_CRTIME) | ||||
| 			ni->creation_time | ||||
| 				= timespec2ntfs(stin->crtime); | ||||
| 		ntfs_fuse_update_times(ni, mask); | ||||
| 	} else | ||||
| 		ntfs_inode_update_times(ni, NTFS_UPDATE_AMCTIME); | ||||
| #endif | ||||
| 
 | ||||
| 	res = ntfs_fuse_getstat(scx, ni, stbuf); | ||||
| 	if (ntfs_inode_close(ni)) | ||||
| 		set_fuse_error(&res); | ||||
| 	return res; | ||||
| } | ||||
| 
 | ||||
| #endif /* defined(HAVE_UTIMENSAT) & defined(FUSE_SET_ATTR_ATIME_NOW) */ | ||||
| 
 | ||||
| 	/*
 | ||||
| 	 *		setattr_x (MacOsX) | ||||
| 	 * | ||||
| 	 *	This is much similar to ntfs_fuse_setattr() | ||||
| 	 * | ||||
| 	 *	TODO : check whether ntfs_fuse_setattr() is needed when | ||||
| 	 *	ntfs_fuse_setattr_x() is defined | ||||
| 	 */ | ||||
| 
 | ||||
| static void ntfs_macfuse_setattr_x(fuse_req_t req, fuse_ino_t ino, | ||||
| 			 struct setattr_x *attr, int to_set, | ||||
| 			 struct fuse_file_info *fi __attribute__((unused))) | ||||
| { | ||||
| 	struct stat stbuf; | ||||
| 	ntfs_inode *ni; | ||||
| 	int res; | ||||
| 	struct SECURITY_CONTEXT security; | ||||
| 
 | ||||
| 	res = 0; | ||||
| 	ntfs_fuse_fill_security_context(req, &security); | ||||
| 						/* no flags */ | ||||
| 	if (!(to_set | ||||
| 		    & (FUSE_SET_ATTR_MODE | ||||
| 			| FUSE_SET_ATTR_UID | FUSE_SET_ATTR_GID | ||||
| 			| FUSE_SET_ATTR_SIZE | ||||
| 			| FUSE_SET_ATTR_ATIME | FUSE_SET_ATTR_MTIME | ||||
| 			| FUSE_SET_ATTR_BKUPTIME | ||||
| 			| FUSE_SET_ATTR_CHGTIME | ||||
| 			| FUSE_SET_ATTR_CRTIME))) { | ||||
| 		ni = ntfs_inode_open(ctx->vol, INODE(ino)); | ||||
| 		if (!ni) | ||||
| 			res = -errno; | ||||
| 		else { | ||||
| 			res = ntfs_fuse_getstat(&security, ni, &stbuf); | ||||
| 			if (ntfs_inode_close(ni)) | ||||
| 				set_fuse_error(&res); | ||||
| 		} | ||||
| 	} | ||||
| 						/* some set of uid/gid/mode */ | ||||
| 	if (to_set | ||||
| 		    & (FUSE_SET_ATTR_MODE | ||||
| 			| FUSE_SET_ATTR_UID | FUSE_SET_ATTR_GID)) { | ||||
| 		switch (to_set | ||||
| 			    & (FUSE_SET_ATTR_MODE | ||||
| 				| FUSE_SET_ATTR_UID | FUSE_SET_ATTR_GID)) { | ||||
| 		case FUSE_SET_ATTR_MODE : | ||||
| 			res = ntfs_fuse_chmod(&security, ino, | ||||
| 						attr->st_mode & 07777, &stbuf); | ||||
| 			break; | ||||
| 		case FUSE_SET_ATTR_UID : | ||||
| 			res = ntfs_fuse_chown(&security, ino, attr->st_uid, | ||||
| 						(gid_t)-1, &stbuf); | ||||
| 			break; | ||||
| 		case FUSE_SET_ATTR_GID : | ||||
| 			res = ntfs_fuse_chown(&security, ino, (uid_t)-1, | ||||
| 						attr->st_gid, &stbuf); | ||||
| 			break; | ||||
| 		case FUSE_SET_ATTR_UID + FUSE_SET_ATTR_GID : | ||||
| 			res = ntfs_fuse_chown(&security, ino, attr->st_uid, | ||||
| 						attr->st_gid, &stbuf); | ||||
| 			break; | ||||
| 		case FUSE_SET_ATTR_UID + FUSE_SET_ATTR_MODE: | ||||
| 			res = ntfs_fuse_chownmod(&security, ino, attr->st_uid, | ||||
| 						(gid_t)-1,attr->st_mode, | ||||
| 						&stbuf); | ||||
| 			break; | ||||
| 		case FUSE_SET_ATTR_GID + FUSE_SET_ATTR_MODE: | ||||
| 			res = ntfs_fuse_chownmod(&security, ino, (uid_t)-1, | ||||
| 						attr->st_gid,attr->st_mode, | ||||
| 						&stbuf); | ||||
| 			break; | ||||
| 		case FUSE_SET_ATTR_UID + FUSE_SET_ATTR_GID + FUSE_SET_ATTR_MODE: | ||||
| 			res = ntfs_fuse_chownmod(&security, ino, attr->st_uid, | ||||
| 					attr->st_gid,attr->st_mode, &stbuf); | ||||
| 			break; | ||||
| 		default : | ||||
| 			break; | ||||
| 		} | ||||
| 	} | ||||
| 						/* size */ | ||||
| 	if (!res && (to_set & FUSE_SET_ATTR_SIZE)) { | ||||
| 		res = ntfs_fuse_trunc(&security, ino, attr->st_size, | ||||
| 					!fi, &stbuf); | ||||
| 	} | ||||
| 						/* some set of times */ | ||||
| 	if (!res && (to_set & (FUSE_SET_ATTR_ATIME | ||||
| 				+ FUSE_SET_ATTR_MTIME | ||||
| 				+ FUSE_SET_ATTR_BKUPTIME | ||||
| 				+ FUSE_SET_ATTR_CHGTIME | ||||
| 				+ FUSE_SET_ATTR_CRTIME))) { | ||||
| #if defined(HAVE_UTIMENSAT) & defined(FUSE_SET_ATTR_ATIME_NOW) | ||||
| 		res = ntfs_fuse_utimens_x(&security, ino, attr, &stbuf, to_set); | ||||
| #else /* defined(HAVE_UTIMENSAT) & defined(FUSE_SET_ATTR_ATIME_NOW) */ | ||||
| 		res = ntfs_fuse_utime_x(&security, ino, attr, &stbuf); | ||||
| #endif /* defined(HAVE_UTIMENSAT) & defined(FUSE_SET_ATTR_ATIME_NOW) */ | ||||
| 	} | ||||
| 	if (res) | ||||
| 		fuse_reply_err(req, -res); | ||||
| 	else | ||||
| 		fuse_reply_attr(req, &stbuf, ATTR_TIMEOUT); | ||||
| } | ||||
| 
 | ||||
| #endif /* defined(__APPLE__) || defined(__DARWIN__) */ | ||||
| 
 | ||||
| #if !KERNELPERMS | (POSIXACLS & !KERNELACLS) | ||||
| 
 | ||||
| static void ntfs_fuse_access(fuse_req_t req, fuse_ino_t ino, int mask) | ||||
|  | @ -4029,9 +4237,7 @@ static struct fuse_lowlevel_ops ntfs_3g_ops = { | |||
| #if 0 && (defined(__APPLE__) || defined(__DARWIN__)) /* Unfinished. */
 | ||||
| 	/* MacFUSE extensions. */ | ||||
| 	.getxtimes	= ntfs_macfuse_getxtimes, | ||||
| 	.setcrtime	= ntfs_macfuse_setcrtime, | ||||
| 	.setbkuptime	= ntfs_macfuse_setbkuptime, | ||||
| 	.setchgtime	= ntfs_macfuse_setchgtime, | ||||
| 	.setattr_x	= ntfs_macfuse_setattr_x, | ||||
| #endif /* defined(__APPLE__) || defined(__DARWIN__) */ | ||||
| 	.init		= ntfs_init | ||||
| }; | ||||
|  |  | |||
|  | @ -4,7 +4,7 @@ | |||
|  * Copyright (c) 2005-2007 Yura Pakhuchiy | ||||
|  * Copyright (c) 2005 Yuval Fledel | ||||
|  * Copyright (c) 2006-2009 Szabolcs Szakacsits | ||||
|  * Copyright (c) 2007-2017 Jean-Pierre Andre | ||||
|  * Copyright (c) 2007-2019 Jean-Pierre Andre | ||||
|  * Copyright (c) 2009 Erik Larsson | ||||
|  * | ||||
|  * This file is originated from the Linux-NTFS project. | ||||
|  | @ -196,7 +196,7 @@ static const char *usage_msg = | |||
| "\n" | ||||
| "Copyright (C) 2005-2007 Yura Pakhuchiy\n" | ||||
| "Copyright (C) 2006-2009 Szabolcs Szakacsits\n" | ||||
| "Copyright (C) 2007-2017 Jean-Pierre Andre\n" | ||||
| "Copyright (C) 2007-2019 Jean-Pierre Andre\n" | ||||
| "Copyright (C) 2009 Erik Larsson\n" | ||||
| "\n" | ||||
| "Usage:    %s [-o option[,...]] <device|image_file> <mount_point>\n" | ||||
|  | @ -595,7 +595,7 @@ static int ntfs_macfuse_getxtimes(const char *org_path, | |||
| 	} | ||||
| 	 | ||||
| 	/* We have no backup timestamp in NTFS. */ | ||||
| 	crtime->tv_sec = sle64_to_cpu(ni->creation_time); | ||||
| 	*crtime = ntfs2timespec(ni->creation_time); | ||||
| exit: | ||||
| 	if (ntfs_inode_close(ni)) | ||||
| 		set_fuse_error(&res); | ||||
|  | @ -605,7 +605,7 @@ exit: | |||
| 	return res; | ||||
| } | ||||
| 
 | ||||
| int ntfs_macfuse_setcrtime(const char *path, const struct timespec *tv) | ||||
| static int ntfs_macfuse_setcrtime(const char *path, const struct timespec *tv) | ||||
| { | ||||
| 	ntfs_inode *ni; | ||||
| 	int res = 0; | ||||
|  | @ -617,7 +617,7 @@ int ntfs_macfuse_setcrtime(const char *path, const struct timespec *tv) | |||
| 		return -errno; | ||||
| 	 | ||||
| 	if (tv) { | ||||
| 		ni->creation_time = cpu_to_sle64(tv->tv_sec); | ||||
| 		ni->creation_time = timespec2ntfs(*tv); | ||||
| 		ntfs_fuse_update_times(ni, NTFS_UPDATE_CTIME); | ||||
| 	} | ||||
| 
 | ||||
|  | @ -626,7 +626,7 @@ int ntfs_macfuse_setcrtime(const char *path, const struct timespec *tv) | |||
| 	return res; | ||||
| } | ||||
| 
 | ||||
| int ntfs_macfuse_setbkuptime(const char *path, const struct timespec *tv) | ||||
| static int ntfs_macfuse_setbkuptime(const char *path, const struct timespec *tv) | ||||
| { | ||||
| 	ntfs_inode *ni; | ||||
| 	int res = 0; | ||||
|  | @ -647,7 +647,7 @@ int ntfs_macfuse_setbkuptime(const char *path, const struct timespec *tv) | |||
| 	return res; | ||||
| } | ||||
| 
 | ||||
| int ntfs_macfuse_setchgtime(const char *path, const struct timespec *tv) | ||||
| static int ntfs_macfuse_setchgtime(const char *path, const struct timespec *tv) | ||||
| { | ||||
| 	ntfs_inode *ni; | ||||
| 	int res = 0; | ||||
|  | @ -659,7 +659,7 @@ int ntfs_macfuse_setchgtime(const char *path, const struct timespec *tv) | |||
| 		return -errno; | ||||
| 
 | ||||
| 	if (tv) { | ||||
| 		ni->last_mft_change_time = cpu_to_sle64(tv->tv_sec); | ||||
| 		ni->last_mft_change_time = timespec2ntfs(*tv); | ||||
| 		ntfs_fuse_update_times(ni, 0); | ||||
| 	} | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue