diff options
| author | Garrett D'Amore <garrett@damore.org> | 2018-03-18 12:46:31 -0700 |
|---|---|---|
| committer | Garrett D'Amore <garrett@damore.org> | 2018-03-18 12:46:31 -0700 |
| commit | 8b979454d891b84da727a329906c4293fadc5f3c (patch) | |
| tree | cb491c476080de11c7fc5b5868579f4ef86f4df4 /src/core/options.c | |
| parent | 3a2af394a7d94ac5f924aaea6cbad825a9b05d75 (diff) | |
| download | nng-8b979454d891b84da727a329906c4293fadc5f3c.tar.gz nng-8b979454d891b84da727a329906c4293fadc5f3c.tar.bz2 nng-8b979454d891b84da727a329906c4293fadc5f3c.zip | |
fixes #295 boolean options should use C99 bool type
fixes #275 nng_pipe_getopt_ptr() missing?
fixes #285 nng_setopt_ptr MIS
fixes #297 nng_listener/dialer_close does not validate mode
This change adds some missing APIs, and changes others.
In particular, certain options are now of type bool, with size
of just one. This is a *breaking* change for code that uses those
options -- NNG_OPT_RAW, NNG_OPT_PAIR1_POLY, NNG_OPT_TLS_VERIFIED.
Diffstat (limited to 'src/core/options.c')
| -rw-r--r-- | src/core/options.c | 36 |
1 files changed, 34 insertions, 2 deletions
diff --git a/src/core/options.c b/src/core/options.c index ef7420d6..f51a6abe 100644 --- a/src/core/options.c +++ b/src/core/options.c @@ -1,6 +1,6 @@ // -// Copyright 2017 Garrett D'Amore <garrett@damore.org> -// Copyright 2017 Capitar IT Group BV <info@capitar.com> +// Copyright 2018 Staysail Systems, Inc. <info@staysail.tech> +// Copyright 2018 Capitar IT Group BV <info@capitar.com> // // This software is supplied under the terms of the MIT License, a // copy of which should be located in the distribution where this @@ -42,6 +42,15 @@ nni_chkopt_int(const void *v, size_t sz, int minv, int maxv) } int +nni_chkopt_bool(size_t sz) +{ + if (sz != sizeof(bool)) { + return (NNG_EINVAL); + } + return (0); +} + +int nni_chkopt_size(const void *v, size_t sz, size_t minv, size_t maxv) { size_t val; @@ -72,6 +81,16 @@ nni_setopt_ms(nni_duration *dp, const void *v, size_t sz) } int +nni_setopt_bool(bool *bp, const void *v, size_t sz) +{ + if (sz != sizeof(*bp)) { + return (NNG_EINVAL); + } + memcpy(bp, v, sizeof(*bp)); + return (0); +} + +int nni_setopt_int(int *ip, const void *v, size_t sz, int minv, int maxv) { int i; @@ -187,6 +206,19 @@ nni_getopt_size(size_t u, void *val, size_t *sizep) } int +nni_getopt_bool(bool b, void *val, size_t *sizep) +{ + size_t sz = sizeof(b); + + if (sz > *sizep) { + sz = *sizep; + } + *sizep = sizeof(b); + memcpy(val, &b, sz); + return (0); +} + +int nni_getopt_ptr(void *ptr, void *val, size_t *sizep) { size_t sz = sizeof(ptr); |
