From e84c2d267950e9f7c2a210edfee783be84dd83b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bodo=20M=C3=B6ller?= Date: Sun, 23 Jan 2000 19:58:03 +0000 Subject: [PATCH] As ftruncate is not availabe on all platforms, switch back to opening the output file with "wb" to truncate it except on VMS (where the file now keeps its original length because it is opened with "rb+" -- does VMS have ftruncate?) --- crypto/rand/randfile.c | 22 ++++++++-------------- 1 file changed, 8 insertions(+), 14 deletions(-) diff --git a/crypto/rand/randfile.c b/crypto/rand/randfile.c index e9721f66c2..1882d7df2c 100644 --- a/crypto/rand/randfile.c +++ b/crypto/rand/randfile.c @@ -121,27 +121,23 @@ int RAND_write_file(const char *file) FILE *out = NULL; int n; +#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. This - should be completely harmless on system that have no file - versions. -- Richard Levitte */ + one, and create file only if it doesn't already exist. */ out=fopen(file,"rb+"); - if (out == NULL -#ifdef ENOENT - && errno == ENOENT + if (out == NULL && errno != ENOENT) + goto err; #endif - ) + + if (out == NULL) { - errno = 0; #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) + int fd = open(file, O_CREAT | O_EXCL, 0600); + if (fd != -1) out = fdopen(fd, "wb"); - } #else out=fopen(file,"wb"); #endif @@ -166,8 +162,6 @@ int RAND_write_file(const char *file) ret+=i; if (n <= 0) break; } - if (ret > 0) - ftruncate(fileno(out), ret); fclose(out); memset(buf,0,BUFSIZE); err: -- GitLab