cvsdist bbbfe0f
--- dos2unix-3.1/dos2unix.c.segf	Thu Jan 17 17:27:42 2002
cvsdist bbbfe0f
+++ dos2unix-3.1/dos2unix.c	Thu Jan 17 17:28:07 2002
cvsdist bbbfe0f
@@ -147,9 +147,9 @@
cvsdist bbbfe0f
  * RetVal: NULL if failure
cvsdist bbbfe0f
  *         file stream otherwise
cvsdist bbbfe0f
  */
cvsdist bbbfe0f
-FILE* OpenOutFile(char *ipFN)
cvsdist bbbfe0f
+FILE* OpenOutFile(int fd)
cvsdist bbbfe0f
 {
cvsdist bbbfe0f
-  return (fopen(ipFN, W_CNTRL));
cvsdist bbbfe0f
+  return (fdopen(fd, W_CNTRL));
cvsdist bbbfe0f
 }
cvsdist bbbfe0f
 
cvsdist bbbfe0f
 
cvsdist bbbfe0f
@@ -260,14 +260,17 @@
cvsdist bbbfe0f
   char TempPath[16];
cvsdist bbbfe0f
   struct stat StatBuf;
cvsdist bbbfe0f
   struct utimbuf UTimeBuf;
cvsdist bbbfe0f
+  int fd;
cvsdist bbbfe0f
 
cvsdist bbbfe0f
   /* retrieve ipInFN file date stamp */
cvsdist bbbfe0f
   if ((ipFlag->KeepDate) && stat(ipInFN, &StatBuf))
cvsdist bbbfe0f
     RetVal = -1;
cvsdist bbbfe0f
 
cvsdist bbbfe0f
-  strcpy (TempPath, "./d2utmp");
cvsdist bbbfe0f
-  strcat (TempPath, "XXXXXX");
cvsdist bbbfe0f
-  mkstemp (TempPath);
cvsdist bbbfe0f
+  strcpy (TempPath, "./d2utmpXXXXXX");
cvsdist bbbfe0f
+  if((fd=mkstemp (TempPath))<0) {
cvsdist bbbfe0f
+	  perror("Failed to open output temp file");
cvsdist bbbfe0f
+	  RetVal = -1;
cvsdist bbbfe0f
+  }
cvsdist bbbfe0f
 
cvsdist bbbfe0f
 #ifdef DEBUG
cvsdist bbbfe0f
   fprintf(stderr, "dos2unix: using %s as temp file\n", TempPath);
cvsdist bbbfe0f
@@ -278,7 +281,7 @@
cvsdist bbbfe0f
     RetVal = -1;
cvsdist bbbfe0f
 
cvsdist bbbfe0f
   /* can open out file? */
cvsdist bbbfe0f
-  if ((!RetVal) && (InF) && ((TempF=OpenOutFile(TempPath)) == NULL))
cvsdist bbbfe0f
+  if ((!RetVal) && (InF) && ((TempF=OpenOutFile(fd)) == NULL))
cvsdist bbbfe0f
   {
cvsdist bbbfe0f
     fclose (InF);
cvsdist bbbfe0f
     RetVal = -1;
cvsdist bbbfe0f
@@ -295,6 +298,8 @@
cvsdist bbbfe0f
   /* can close out file? */
cvsdist bbbfe0f
   if ((TempF) && (fclose(TempF) == EOF))
cvsdist bbbfe0f
     RetVal = -1;
cvsdist bbbfe0f
+  if(fd>=0)
cvsdist bbbfe0f
+	  close(fd);
cvsdist bbbfe0f
 
cvsdist bbbfe0f
   if ((!RetVal) && (ipFlag->KeepDate))
cvsdist bbbfe0f
   {
cvsdist bbbfe0f
@@ -340,14 +345,17 @@
cvsdist bbbfe0f
   char TempPath[16];
cvsdist bbbfe0f
   struct stat StatBuf;
cvsdist bbbfe0f
   struct utimbuf UTimeBuf;
cvsdist bbbfe0f
+  int fd;
cvsdist bbbfe0f
 
cvsdist bbbfe0f
   /* retrieve ipInFN file date stamp */
cvsdist bbbfe0f
   if ((ipFlag->KeepDate) && stat(ipInFN, &StatBuf))
cvsdist bbbfe0f
     RetVal = -1;
cvsdist bbbfe0f
 
cvsdist bbbfe0f
-  strcpy (TempPath, "./u2dtmp");
cvsdist bbbfe0f
-  strcat (TempPath, "XXXXXX");
cvsdist bbbfe0f
-  mkstemp (TempPath);
cvsdist bbbfe0f
+  strcpy (TempPath, "./u2dtmpXXXXXX");
cvsdist bbbfe0f
+  if((fd=mkstemp (TempPath))<0) {
cvsdist bbbfe0f
+	  perror("Failed to open output temp file");
cvsdist bbbfe0f
+	  RetVal = -1;
cvsdist bbbfe0f
+  }
cvsdist bbbfe0f
 
cvsdist bbbfe0f
 #ifdef DEBUG
cvsdist bbbfe0f
   fprintf(stderr, "dos2unix: using %s as temp file\n", TempPath);
cvsdist bbbfe0f
@@ -358,7 +366,7 @@
cvsdist bbbfe0f
     RetVal = -1;
cvsdist bbbfe0f
 
cvsdist bbbfe0f
   /* can open out file? */
cvsdist bbbfe0f
-  if ((!RetVal) && (InF) && ((TempF=OpenOutFile(TempPath)) == NULL))
cvsdist bbbfe0f
+  if ((!RetVal) && (InF) && ((TempF=OpenOutFile(fd)) == NULL))
cvsdist bbbfe0f
   {
cvsdist bbbfe0f
     fclose (InF);
cvsdist bbbfe0f
     RetVal = -1;
cvsdist bbbfe0f
@@ -376,6 +384,9 @@
cvsdist bbbfe0f
   if ((TempF) && (fclose(TempF) == EOF))
cvsdist bbbfe0f
     RetVal = -1;
cvsdist bbbfe0f
 
cvsdist bbbfe0f
+  if(fd>=0)
cvsdist bbbfe0f
+	  close(fd);
cvsdist bbbfe0f
+
cvsdist bbbfe0f
   if ((!RetVal) && (ipFlag->KeepDate))
cvsdist bbbfe0f
   {
cvsdist bbbfe0f
     UTimeBuf.actime = StatBuf.st_atime;