/* * Copyright 2018-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 * in the file LICENSE in the source distribution or at * https://www.openssl.org/source/license.html */ #include "../testutil.h" #include "internal/nelem.h" #include "tu_local.h" #include "output.h" static int used[100] = { 0 }; int test_skip_common_options(void) { OPTION_CHOICE_DEFAULT o; while ((o = (OPTION_CHOICE_DEFAULT)opt_next()) != OPT_EOF) { switch (o) { case OPT_TEST_CASES: break; default: case OPT_ERR: return 0; } } return 1; } size_t test_get_argument_count(void) { return opt_num_rest(); } char *test_get_argument(size_t n) { char **argv = opt_rest(); OPENSSL_assert(n < sizeof(used)); if ((int)n >= opt_num_rest() || argv == NULL) return NULL; used[n] = 1; return argv[n]; } void opt_check_usage(void) { int i; char **argv = opt_rest(); int n, arg_count = opt_num_rest(); if (arg_count > (int)OSSL_NELEM(used)) n = (int)OSSL_NELEM(used); else n = arg_count; for (i = 0; i < n; i++) { if (used[i] == 0) test_printf_stderr("Warning ignored command-line argument %d: %s\n", i, argv[i]); } if (i < arg_count) test_printf_stderr("Warning arguments %d and later unchecked\n", i); } int opt_printf_stderr(const char *fmt, ...) { va_list ap; int ret; va_start(ap, fmt); ret = test_vprintf_stderr(fmt, ap); va_end(ap); return ret; }