--- util.c.orig	Fri Aug 13 07:45:15 1999
+++ util.c	Mon Dec 13 03:14:01 1999
@@ -19,6 +19,7 @@
 #define RUBY_NO_INLINE
 #include "ruby.h"
 
+#include <unistd.h>
 #ifdef USE_CWGUSI
 extern char* mktemp(char*);
 #endif
@@ -148,12 +149,29 @@ ruby_mktemp()
     if (!dir) dir = check_dir(getenv("TMPDIR"));
     if (!dir) dir = "/tmp";
 
+#ifdef HAVE_MKSTEMP
+    buf = ALLOC_N(char,strlen(dir)+15);
+    sprintf(buf, "%s/rb.XXXXXXXXXX", dir);
+    {
+    int fd;
+
+    fd = mkstemp(buf);
+    if (fd == -1) {
+    	free(buf);
+	return NULL;
+    }
+    close(fd);
+    return buf;
+    }
+
+#else
     buf = ALLOC_N(char,strlen(dir)+10);
     sprintf(buf, "%s/rbXXXXXX", dir);
     dir = mktemp(buf);
     if (dir == NULL) free(buf);
 
     return dir;
+#endif
 }
 
 #if defined(MSDOS) || defined(__CYGWIN32__) || defined(NT)
