diff options
author | Richard Levitte <levitte@openssl.org> | 2019-09-23 11:30:05 +0200 |
---|---|---|
committer | Richard Levitte <levitte@openssl.org> | 2019-10-17 09:16:45 +0200 |
commit | 031873fe03610aa191031b5a36089bc29c67db29 (patch) | |
tree | 5e53f1cbc9f57a504b9ccf5807e1eaa0122bd33c /apps/lib/names.c | |
parent | 506cb0f6322b24c980273ff5cd8f2c973a12b42f (diff) |
'openssl list' and 'openssl provider': adapt display of multiple names
Reviewed-by: Tomas Mraz <tmraz@fedoraproject.org>
(Merged from https://github.com/openssl/openssl/pull/9979)
Diffstat (limited to 'apps/lib/names.c')
-rw-r--r-- | apps/lib/names.c | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/apps/lib/names.c b/apps/lib/names.c new file mode 100644 index 0000000000..09ee16fd37 --- /dev/null +++ b/apps/lib/names.c @@ -0,0 +1,48 @@ +/* + * Copyright 2019 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 <string.h> +#include <openssl/bio.h> +#include <openssl/safestack.h> +#include "names.h" + +#ifdef _WIN32 +# define strcasecmp _stricmp +#endif + +int name_cmp(const char * const *a, const char * const *b) +{ + return strcasecmp(*a, *b); +} + +void collect_names(const char *name, void *vdata) +{ + STACK_OF(OPENSSL_CSTRING) *names = vdata; + + sk_OPENSSL_CSTRING_push(names, name); +} + +void print_names(BIO *out, STACK_OF(OPENSSL_CSTRING) *names) +{ + int i = sk_OPENSSL_CSTRING_num(names); + int j; + + sk_OPENSSL_CSTRING_sort(names); + if (i > 1) + BIO_printf(out, "{ "); + for (j = 0; j < i; j++) { + const char *name = sk_OPENSSL_CSTRING_value(names, j); + + if (j > 0) + BIO_printf(out, ", "); + BIO_printf(out, "%s", name); + } + if (i > 1) + BIO_printf(out, " }"); +} |