/*
- * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the Apache License 2.0 (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
BIO *bio_out = NULL;
BIO *bio_err = NULL;
+static void warn_deprecated(const FUNCTION *fp)
+{
+ if (fp->deprecated_version != NULL)
+ BIO_printf(bio_err, "The command %s was deprecated in version %s.",
+ fp->name, fp->deprecated_version);
+ else
+ BIO_printf(bio_err, "The command %s is deprecated.", fp->name);
+ if (strcmp(fp->deprecated_alternative, DEPRECATED_NO_ALTERNATIVE) != 0)
+ BIO_printf(bio_err, " Use '%s' instead.", fp->deprecated_alternative);
+ BIO_printf(bio_err, "\n");
+}
+
static int apps_startup(void)
{
#ifdef SIGPIPE
hex == NULL ? "<null>" : hex,
OSSL_trace_get_category_name(category));
OPENSSL_free(hex);
- BIO_ctrl(trace_data->bio, PREFIX_CTRL_SET_PREFIX,
- strlen(buffer), buffer);
+ BIO_set_prefix(trace_data->bio, buffer);
break;
case OSSL_TRACE_CTRL_WRITE:
if (!ossl_assert(trace_data->ingroup))
return 0;
trace_data->ingroup = 0;
- BIO_ctrl(trace_data->bio, PREFIX_CTRL_SET_PREFIX, 0, NULL);
+ BIO_set_prefix(trace_data->bio, NULL);
break;
}
if (OSSL_trace_enabled(category))
return;
- channel = BIO_push(BIO_new(apps_bf_prefix()),
- dup_bio_err(FORMAT_TEXT));
+ channel = BIO_push(BIO_new(BIO_f_prefix()), dup_bio_err(FORMAT_TEXT));
trace_data = OPENSSL_zalloc(sizeof(*trace_data));
if (trace_data == NULL
win32_utf8argv(&argc, &argv);
#endif
- /*
- * We use the prefix method to get the trace output we want. Since some
- * trace outputs happen with OPENSSL_cleanup(), which is run automatically
- * after exit(), we need to destroy the prefix method as late as possible.
- */
- atexit(destroy_prefix_method);
-
#ifndef OPENSSL_NO_TRACE
setup_trace(getenv("OPENSSL_TRACE"));
#endif
fp = lh_FUNCTION_retrieve(prog, &f);
if (fp != NULL) {
argv[0] = pname;
+ if (fp->deprecated_alternative != NULL)
+ warn_deprecated(fp);
ret = fp->func(argc, argv);
goto end;
}
}
ret = 1;
end:
+ app_providers_cleanup();
OPENSSL_free(default_config_file);
lh_FUNCTION_free(prog);
OPENSSL_free(arg.argv);
}
}
if (fp != NULL) {
+ if (fp->deprecated_alternative != NULL)
+ warn_deprecated(fp);
return fp->func(argc, argv);
}
if ((strncmp(argv[0], "no-", 3)) == 0) {