summaryrefslogtreecommitdiffstats
path: root/apps
diff options
context:
space:
mode:
authorRichard Levitte <levitte@openssl.org>2017-02-23 01:45:04 +0100
committerRichard Levitte <levitte@openssl.org>2017-02-23 02:20:20 +0100
commit9f1dd6a6ff6dadb3b356f74357a85cc3b5002e6d (patch)
tree48cafa90384c7c3bb062df7ee168f9963fd29b35 /apps
parentce180867a4ae781cd84fdcf01ba6e2320de651ef (diff)
On VMS, massage the fetch file names to remove the generation number
The generation number is ';nnn' at the end of the file name fetched with readdir(). Because rehash checks for specific extensions and doesn't expect an additional generation number, the easiest is to massage the received file name early by simply removing the generation number. Reviewed-by: Rich Salz <rsalz@openssl.org> (Merged from https://github.com/openssl/openssl/pull/2717) (cherry picked from commit 39aceac320a1561d50c7d71ac2560aec7ab8eddb)
Diffstat (limited to 'apps')
-rw-r--r--apps/rehash.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/apps/rehash.c b/apps/rehash.c
index 6544ae1a1d..a380bddab8 100644
--- a/apps/rehash.c
+++ b/apps/rehash.c
@@ -281,6 +281,24 @@ static int ends_with_dirsep(const char *path)
return *path == '/';
}
+static int massage_filename(char *name)
+{
+# ifdef __VMS
+ char *p = strchr(name, ';');
+ char *q = p;
+
+ if (q != NULL) {
+ for (q++; *q != '\0'; q++) {
+ if (!isdigit(*q))
+ return 1;
+ }
+ }
+
+ *p = '\0';
+# endif
+ return 1;
+}
+
/*
* Process a directory; return number of errors found.
*/
@@ -316,6 +334,7 @@ static int do_dir(const char *dirname, enum Hash h)
}
while ((filename = OPENSSL_DIR_read(&d, dirname)) != NULL) {
if ((copy = strdup(filename)) == NULL
+ || !massage_filename(copy)
|| sk_OPENSSL_STRING_push(files, copy) == 0) {
BIO_puts(bio_err, "out of memory\n");
exit(1);