diff options
author | Dr. Stephen Henson <steve@openssl.org> | 2002-03-08 19:11:15 +0000 |
---|---|---|
committer | Dr. Stephen Henson <steve@openssl.org> | 2002-03-08 19:11:15 +0000 |
commit | 26e123738028da5e767cbf7e71c6af114cab6ec3 (patch) | |
tree | a95648c8bb098f3d88641d1435faa099eaf7ff88 /apps | |
parent | 4882171df5ba7cb8735b685478a008df25eef47a (diff) | |
download | openssl-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.c | 17 | ||||
-rw-r--r-- | apps/ca.c | 4 |
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 @@ -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]); |