Fix the Win32_rename() function so it correctly
authorDr. Stephen Henson <steve@openssl.org>
Fri, 8 Mar 2002 19:06:36 +0000 (19:06 +0000)
committerDr. Stephen Henson <steve@openssl.org>
Fri, 8 Mar 2002 19:06:36 +0000 (19:06 +0000)
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
apps/ca.c

index 8c9726ebd7b060fc6e28a4feed712a8e03e6cf94..34cd552eb538e65d16b018d57e926d3acb565670 100644 (file)
@@ -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
 
index 2eec0957f11d17d54f3a25be5fcae61d4fedb7c3..6ef3eb0f0f7d2d76841a30565982d878776e747e 100644 (file)
--- 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