diff --git a/src/tool_main.c b/src/tool_main.c index 00a2410324d6d44fa7d6421b07a47b5c8767424c..95e9cc7794dfdc7078b6535a4e8ca111b10d523d 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 1a168afcb918df71d2afb724b461adeeedf4ec17..4166fc2ef93aa82218290b1f35bdcf1e2db317a3 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 2065b6f2787cb6dadf40b789fdbea9c38a0c9778..c94686f96047d98f3e4dfd54b23327ebb1fb5a8e 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 ad1339c038dc7d262ecc4eb8cc9ac3ff5026e822..1afd75ec8c8d89ed1a053fe3e7f3ec7a648aff8e 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);