aboutsummaryrefslogtreecommitdiffstats
path: root/apps
diff options
context:
space:
mode:
authorDr. Stephen Henson <steve@openssl.org>2002-03-08 19:11:15 +0000
committerDr. Stephen Henson <steve@openssl.org>2002-03-08 19:11:15 +0000
commit26e123738028da5e767cbf7e71c6af114cab6ec3 (patch)
treea95648c8bb098f3d88641d1435faa099eaf7ff88 /apps
parent4882171df5ba7cb8735b685478a008df25eef47a (diff)
downloadopenssl-26e123738028da5e767cbf7e71c6af114cab6ec3.tar.gz
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.
Diffstat (limited to 'apps')
-rw-r--r--apps/apps.c17
-rw-r--r--apps/ca.c4
2 files changed, 11 insertions, 10 deletions
diff --git a/apps/apps.c b/apps/apps.c
index 8c9726ebd7..f0c280c38d 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 an 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 f368d39b97..5839777189 100644
--- a/apps/ca.c
+++ b/apps/ca.c
@@ -1581,6 +1581,10 @@ bad:
#else
strcat(buf[1],"-old");
#endif
+ BIO_free(in);
+ in = NULL;
+ BIO_free(out);
+ out = NULL;
if (rename(dbfile,buf[1]) < 0)
{
BIO_printf(bio_err,"unable to rename %s to %s\n", dbfile, buf[1]);