summaryrefslogtreecommitdiff
blob: a357b0b138dfd8544a2ac955cc300d9bab2cc4f8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Ripped from Fedora

--- dos2unix-3.1/dos2unix.c
+++ dos2unix-3.1/dos2unix.c
@@ -345,11 +345,14 @@ int ConvertDosToUnixOldFile(char* ipInFN
   char TempPath[16];
   struct stat StatBuf;
   struct utimbuf UTimeBuf;
+  mode_t mode = S_IRUSR | S_IWUSR;
   int fd;
 
   /* retrieve ipInFN file date stamp */
-  if ((ipFlag->KeepDate) && stat(ipInFN, &StatBuf))
+  if (stat(ipInFN, &StatBuf))
     RetVal = -1;
+  else
+    mode = StatBuf.st_mode;
 
   strcpy (TempPath, "./u2dtmpXXXXXX");
   if((fd=mkstemp (TempPath))<0) {
@@ -357,6 +360,9 @@ int ConvertDosToUnixOldFile(char* ipInFN
 	  RetVal = -1;
   }
 
+  if (!RetVal && fchmod (fd, mode) && fchmod (fd, S_IRUSR | S_IWUSR))
+    RetVal = -1;
+
 #ifdef DEBUG
   fprintf(stderr, "dos2unix: using %s as temp file\n", TempPath);
 #endif DEBUG