mirror of
https://github.com/openssl/openssl.git
synced 2024-12-15 13:03:39 +08:00
Make "openssl rehash" work on VMS 8.3 and up
A spelling error prevented it from building correctly. Furthermore, we need to be more careful when to add a / at the end of the dirname and when not. Reviewed-by: Rich Salz <rsalz@openssl.org> (Merged from https://github.com/openssl/openssl/pull/2706)
This commit is contained in:
parent
d8eaaf1535
commit
5c80e2af3a
@ -16,7 +16,7 @@
|
||||
#include "apps.h"
|
||||
|
||||
#if defined(OPENSSL_SYS_UNIX) || defined(__APPLE__) || \
|
||||
(defined(__VMS) && defined(__DECC) && __CTRL_VER >= 80300000)
|
||||
(defined(__VMS) && defined(__DECC) && __CRTL_VER >= 80300000)
|
||||
# include <unistd.h>
|
||||
# include <stdio.h>
|
||||
# include <limits.h>
|
||||
@ -267,6 +267,20 @@ static void str_free(char *s)
|
||||
OPENSSL_free(s);
|
||||
}
|
||||
|
||||
static int ends_with_dirsep(const char *path)
|
||||
{
|
||||
if (*path != '\0')
|
||||
path += strlen(path) - 1;
|
||||
# ifdef __VMS
|
||||
if (*path == ']' || *path == '>' || *path == ':')
|
||||
return 1;
|
||||
# elif _WIN32
|
||||
if (*path == '\\')
|
||||
return 1;
|
||||
# endif
|
||||
return *path == '/';
|
||||
}
|
||||
|
||||
/*
|
||||
* Process a directory; return number of errors found.
|
||||
*/
|
||||
@ -289,7 +303,7 @@ static int do_dir(const char *dirname, enum Hash h)
|
||||
return 1;
|
||||
}
|
||||
buflen = strlen(dirname);
|
||||
pathsep = (buflen && dirname[buflen - 1] == '/') ? "" : "/";
|
||||
pathsep = (buflen && !ends_with_dirsep(dirname)) ? "/": "";
|
||||
buflen += NAME_MAX + 1 + 1;
|
||||
buf = app_malloc(buflen, "filename buffer");
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user