aboutsummaryrefslogtreecommitdiff
path: root/src/core/options.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/options.c')
-rw-r--r--src/core/options.c47
1 files changed, 36 insertions, 11 deletions
diff --git a/src/core/options.c b/src/core/options.c
index 4027564c..76025710 100644
--- a/src/core/options.c
+++ b/src/core/options.c
@@ -123,45 +123,70 @@ nni_setopt_size(size_t *sp, const void *v, size_t sz, size_t minv, size_t maxv)
}
int
-nni_getopt_usec(nni_duration *ptr, void *val, size_t *sizep)
+nni_getopt_usec(nni_duration u, void *val, size_t *sizep)
{
- size_t sz = sizeof(*ptr);
+ size_t sz = sizeof(u);
if (sz > *sizep) {
sz = *sizep;
}
- *sizep = sizeof(*ptr);
- memcpy(val, ptr, sz);
+ *sizep = sizeof(u);
+ memcpy(val, &u, sz);
return (0);
}
int
-nni_getopt_int(int *ptr, void *val, size_t *sizep)
+nni_getopt_int(int i, void *val, size_t *sizep)
{
- size_t sz = sizeof(*ptr);
+ size_t sz = sizeof(i);
if (sz > *sizep) {
sz = *sizep;
}
- *sizep = sizeof(*ptr);
- memcpy(val, ptr, sz);
+ *sizep = sizeof(i);
+ memcpy(val, &i, sz);
return (0);
}
int
-nni_getopt_size(size_t *ptr, void *val, size_t *sizep)
+nni_getopt_u64(const uint64_t u, void *val, size_t *sizep)
{
- size_t sz = sizeof(*ptr);
+ size_t sz = sizeof(u);
if (sz > *sizep) {
sz = *sizep;
}
- *sizep = sizeof(*ptr);
+ *sizep = sizeof(u);
+ memcpy(val, &u, sz);
+ return (0);
+}
+
+int
+nni_getopt_str(const char *ptr, void *val, size_t *sizep)
+{
+ size_t len = strlen(ptr) + 1;
+ size_t sz;
+
+ sz = (len > *sizep) ? *sizep : len;
+ *sizep = len;
memcpy(val, ptr, sz);
return (0);
}
int
+nni_getopt_size(size_t u, void *val, size_t *sizep)
+{
+ size_t sz = sizeof(u);
+
+ if (sz > *sizep) {
+ sz = *sizep;
+ }
+ *sizep = sizeof(u);
+ memcpy(val, &u, sz);
+ return (0);
+}
+
+int
nni_setopt_buf(nni_msgq *mq, const void *val, size_t sz)
{
int len;