+#ifdef VMS
+ /* Under VMS, fopen(file, "wb") will create a new version of the
+ same file. This is not good, so let's try updating an existing
+ one, and create file only if it doesn't already exist. */
+ /* At the same time, if we just update a file, we also need to
+ truncate it, and unfortunately, ftruncate() and truncate() do
+ not exist everywhere. All that remains is to delete old versions
+ of the random data file (done at the end). */
+#if 0
+ out=fopen(file,"rb+");
+ if (out == NULL && errno != ENOENT)
+ goto err;
+#endif
+#endif
+
+ if (out == NULL)
+ {
+#if defined O_CREAT && defined O_EXCL
+ /* chmod(..., 0600) is too late to protect the file,
+ * permissions should be restrictive from the start */
+ int fd = open(file, O_CREAT | O_EXCL, 0600);
+ if (fd != -1)
+ out = fdopen(fd, "wb");
+#else
+ out=fopen(file,"wb");
+#endif
+ }