diff -up unix2dos-2.2/unix2dos.c.mode unix2dos-2.2/unix2dos.c --- unix2dos-2.2/unix2dos.c.mode 2008-09-08 10:13:39.000000000 +0100 +++ unix2dos-2.2/unix2dos.c 2008-09-08 10:13:39.000000000 +0100 @@ -292,11 +292,14 @@ int ConvertUnixToDosOldFile(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) { @@ -304,6 +307,9 @@ int ConvertUnixToDosOldFile(char* ipInFN RetVal = -1; } + if (!RetVal && fchmod (fd, mode) && fchmod (fd, S_IRUSR | S_IWUSR)) + RetVal = -1; + #ifdef DEBUG fprintf(stderr, "unix2dos: using %s as temp file\n", TempPath); #endif DEBUG