From 25f350a058cea31ad772a0542f6f8f81094d074d Mon Sep 17 00:00:00 2001 From: "Dr. Stephen Henson" Date: Fri, 8 Mar 2002 19:06:36 +0000 Subject: [PATCH] Fix the Win32_rename() function so it correctly returns an error code. Use the same code in Win9X and NT. Fix some ca.c options so they work under Win32: unlink/rename wont work under Win32 unless the file is closed. --- apps/apps.c | 17 +++++++---------- apps/ca.c | 4 ++++ 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/apps/apps.c b/apps/apps.c index 8c9726ebd7..34cd552eb5 100644 --- a/apps/apps.c +++ b/apps/apps.c @@ -333,16 +333,13 @@ void program_name(char *in, char *out, int size) #ifdef OPENSSL_SYS_WIN32 int WIN32_rename(char *from, char *to) { -#ifdef OPENSSL_SYS_WINNT - int ret; -/* Note: MoveFileEx() doesn't work under Win95, Win98 */ - - ret=MoveFileEx(from,to,MOVEFILE_REPLACE_EXISTING|MOVEFILE_COPY_ALLOWED); - return(ret?0:-1); -#else - unlink(to); - return MoveFile(from, to); -#endif + /* Windows rename gives and error if 'to' exists, so delete it + * first and ignore file not found errror + */ + if((remove(to) != 0) && (errno != ENOENT)) + return -1; +#undef rename + return rename(from, to); } #endif diff --git a/apps/ca.c b/apps/ca.c index 2eec0957f1..6ef3eb0f0f 100644 --- a/apps/ca.c +++ b/apps/ca.c @@ -1569,6 +1569,10 @@ bad: } j=TXT_DB_write(out,db); if (j <= 0) goto err; + BIO_free_all(out); + out = NULL; + BIO_free_all(in); + in = NULL; strncpy(buf[1],dbfile,BSIZE-4); buf[1][BSIZE-4]='\0'; #ifndef OPENSSL_SYS_VMS -- 2.25.1