- Preserve file modes (bug #437465).

This commit is contained in:
Tim Waugh 2008-09-08 09:17:56 +00:00
parent 89e5715fc7
commit 1271138cb8
2 changed files with 31 additions and 0 deletions

View File

@ -0,0 +1,28 @@
diff -up dos2unix-3.1/dos2unix.c.preserve-file-modes dos2unix-3.1/dos2unix.c
--- dos2unix-3.1/dos2unix.c.preserve-file-modes 2008-09-08 09:58:05.000000000 +0100
+++ dos2unix-3.1/dos2unix.c 2008-09-08 10:16:04.000000000 +0100
@@ -320,9 +320,10 @@ int ConvertDosToUnixNewFile(char *ipInFN
struct stat StatBuf;
struct utimbuf UTimeBuf;
int fd;
+ mode_t mask;
/* retrieve ipInFN file date stamp */
- if ((ipFlag->KeepDate) && stat(ipInFN, &StatBuf))
+ if (stat(ipInFN, &StatBuf))
RetVal = -1;
if((fd = MakeTempFileFrom(ipOutFN, &TempPath))<0) {
@@ -346,6 +347,12 @@ int ConvertDosToUnixNewFile(char *ipInFN
RetVal = -1;
}
+ /* preserve original mode as modified by umask */
+ mask = umask(0);
+ umask(mask);
+ if (!RetVal && fchmod(fd, StatBuf.st_mode & ~mask))
+ RetVal = -1;
+
/* conversion sucessful? */
if ((!RetVal) && (ConvertDosToUnix(InF, TempF, ipFlag)))
RetVal = -1;

View File

@ -14,6 +14,7 @@ Patch5: dos2unix-3.1-tmppath.patch
Patch6: dos2unix-c-missing-arg.patch
Patch7: dos2unix-missing-proto.patch
Patch8: dos2unix-manpage.patch
Patch9: dos2unix-preserve-file-modes.patch
Buildroot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
@ -31,6 +32,7 @@ Dos2unix converts DOS or MAC text files to UNIX format.
%patch6 -p1 -b .c-missing-arg
%patch7 -p1 -b .missing-proto
%patch8 -p1 -b .manpage
%patch9 -p1 -b .preserve-file-modes
for I in *.[ch]; do
sed -e 's,#endif.*,#endif,g' -e 's,#else.*,#else,g' $I > $I.new
@ -63,6 +65,7 @@ rm -rf $RPM_BUILD_ROOT
%changelog
* Mon Sep 8 2008 Tim Waugh <twaugh@redhat.com> 3.1-33
- Preserve file modes (bug #437465).
- Fixed manpage grammar (bug #460731).
* Mon Apr 14 2008 Tim Waugh <twaugh@redhat.com> 3.1-32