--- vfs/vfs.c.orig	Mon May 25 07:16:04 1998
+++ vfs/vfs.c	Thu Apr 27 11:20:45 2000
@@ -1274,13 +1274,25 @@
     fdin = mc_open (filename, O_RDONLY);
     if (fdin == -1)
         return NULL;
+#ifdef __OpenBSD__
+#define TEMPFILE	"/tmp/mcXXXXXXXXXX"
+    tmp = xmalloc (sizeof(TEMPFILE), TEMPFILE);
+    strcpy (tmp, TEMPFILE);
+    fdout = mkstemp (tmp);
+#else
     tmp = tmpnam(NULL);
     fdout = creat (tmp, 0600);
+#endif
     if (fdout == -1) {
         mc_close (fdin);
+#ifdef __OpenBSD__
+        free (tmp);
+#endif
         return NULL;
     }
+#ifndef __OpenBSD__
     tmp = strdup (tmp);
+#endif
     while ((i = mc_read (fdin, buffer, sizeof (buffer))) == sizeof (buffer)) {
         write (fdout, buffer, i);
     }
