* [including the GNU Public Licence.]
*/
+#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/types.h>
-#include "e_os.h"
-#include "rand.h"
+
+#ifndef FLAT_INC
+# include "../e_os.h"
+#else
+# include "e_os.h"
+#endif
+
+#include <openssl/rand.h>
#undef BUFSIZE
#define BUFSIZE 1024
FILE *out;
int n;
- out=fopen(file,"wb");
+ /* Under VMS, fopen(file, "wb") will craete 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 */
+ out=fopen(file,"rb+");
+ if (out == NULL && errno == ENOENT)
+ {
+ errno = 0;
+ out=fopen(file,"wb");
+ }
if (out == NULL) goto err;
chmod(file,0600);
n=RAND_DATA;
if (((int)(strlen(s)+strlen(RFILE)+2)) > size)
return(RFILE);
strcpy(buf,s);
+#ifndef VMS
strcat(buf,"/");
+#endif
strcat(buf,RFILE);
ret=buf;
}