aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/tool_main.c10
-rw-r--r--src/tool_operate.c2
-rw-r--r--src/tool_setup.h4
-rw-r--r--src/tool_vms.h7
4 files changed, 17 insertions, 6 deletions
diff --git a/src/tool_main.c b/src/tool_main.c
index 00a241032..95e9cc779 100644
--- a/src/tool_main.c
+++ b/src/tool_main.c
@@ -45,6 +45,16 @@
*/
#include "memdebug.h" /* keep this as LAST include */
+#ifdef __VMS
+/*
+ * vms_show is a global variable, used in main() as parameter for
+ * function vms_special_exit() to allow proper curl tool exiting.
+ * Its value may be set in other tool_*.c source files thanks to
+ * forward declaration present in tool_vms.h
+ */
+static int vms_show = 0;
+#endif
+
/*
* Ensure that file descriptors 0, 1 and 2 (stdin, stdout, stderr) are
* open before starting to run. Otherwise, the first three network
diff --git a/src/tool_operate.c b/src/tool_operate.c
index 1a168afcb..4166fc2ef 100644
--- a/src/tool_operate.c
+++ b/src/tool_operate.c
@@ -73,6 +73,7 @@
#include "tool_writeenv.h"
#include "tool_writeout.h"
#include "tool_xattr.h"
+#include "tool_vms.h"
#include "memdebug.h" /* keep this as LAST include */
@@ -1537,7 +1538,6 @@ int operate(struct Configurable *config, int argc, argv_item_t argv[])
show_error:
#ifdef __VMS
- vms_show = 0;
if(is_vms_shell()) {
/* VMS DCL shell behavior */
if(!config->showerror)
diff --git a/src/tool_setup.h b/src/tool_setup.h
index 2065b6f27..c94686f96 100644
--- a/src/tool_setup.h
+++ b/src/tool_setup.h
@@ -49,10 +49,6 @@
# define main(x,y) curl_main(x,y)
#endif
-#ifdef __VMS
-# include "tool_vms.h"
-#endif
-
#ifdef TPF
# undef select
/* change which select is used for the curl command line tool */
diff --git a/src/tool_vms.h b/src/tool_vms.h
index ad1339c03..1afd75ec8 100644
--- a/src/tool_vms.h
+++ b/src/tool_vms.h
@@ -25,7 +25,12 @@
#ifdef __VMS
-int vms_show; /* If VMS error code has been written */
+/*
+ * Forward-declaration of global variable vms_show defined
+ * in tool_main.c, used in main() as parameter for function
+ * vms_special_exit() to allow proper curl tool exiting.
+ */
+extern int vms_show;
int is_vms_shell(void);
void vms_special_exit(int code, int vms_show);