summaryrefslogtreecommitdiffstats
path: root/apps/apps.h
diff options
context:
space:
mode:
authorRichard Levitte <levitte@openssl.org>2016-03-30 08:35:18 +0200
committerRichard Levitte <levitte@openssl.org>2016-03-30 20:25:08 +0200
commit087ca80ad83071dde0bb6bc1c28c743caa00eaf8 (patch)
tree63e6d61af33aeae5da33ca126e3582231295ddaf /apps/apps.h
parent90dbd25097d7d4af0bea0cd9cab60d749ed0a6a2 (diff)
Fix pointer size issues with argv on VMS
The argument 'argv' in 'main' is a short pointer to a short pointer on VMS, regardless of initial pointer size. We must therefore make sure that 'copy_argv' gets a 32-bit pointer for argv, and that the copied argv is used for the rest of main(). This introduces the local type argv_t, which will have correct pointer size in all cases (and be harmless on all other platforms) as well as the macro Argv, which is defined as 'copied_argv' or 'argv', as the case may be. Reviewed-by: Andy Polyakov <appro@openssl.org>
Diffstat (limited to 'apps/apps.h')
-rw-r--r--apps/apps.h11
1 files changed, 11 insertions, 0 deletions
diff --git a/apps/apps.h b/apps/apps.h
index fc480e16c8..7cf0dc4b6a 100644
--- a/apps/apps.h
+++ b/apps/apps.h
@@ -445,6 +445,17 @@ typedef struct args_st {
char **argv;
} ARGS;
+#if defined(OPENSSL_SYS_VMS) && defined(__DECC)
+# pragma pointer_size save
+# pragma pointer_size 32
+typedef char **argv_t;
+# pragma pointer_size restore
+char **copy_argv(int *argc, argv_t argv);
+#else
+typedef char **argv_t;
+#endif
+
+
# define PW_MIN_LENGTH 4
typedef struct pw_cb_data {
const void *password;