# include <ctype.h>
# include <sys/stat.h>
+/*
+ * Make sure that the processing of symbol names is treated the same as when
+ * libcrypto is built. This is done automatically for public headers (see
+ * include/openssl/__DECC_INCLUDE_PROLOGUE.H and __DECC_INCLUDE_EPILOGUE.H),
+ * but not for internal headers.
+ */
+# ifdef __VMS
+# pragma names save
+# pragma names as_is,shortened
+# endif
+
# include "internal/o_dir.h"
+
+# ifdef __VMS
+# pragma names restore
+# endif
+
# include <openssl/evp.h>
# include <openssl/pem.h>
# include <openssl/x509.h>
{
if (*path != '\0')
path += strlen(path) - 1;
-# ifdef __VMS
+# if defined __VMS
if (*path == ']' || *path == '>' || *path == ':')
return 1;
-# elif _WIN32
+# elif defined _WIN32
if (*path == '\\')
return 1;
# endif
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.
*/
}
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);