/* ldb database library Copyright (C) Andrew Tridgell 2010 ** NOTE! The following LGPL license applies to the ldb ** library. This does NOT imply that all of Samba is released ** under the LGPL This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, see . */ /* * Name: ldb * * Component: ldb options[] handling * * Author: Andrew Tridgell */ #include "ldb_private.h" /* find an option within an options array accepts the following forms: NAME NAME:value NAME=value returns a pointer into an element of the options[] array, or NULL is not found. For the NAME form, returns a pointer to an empty string (thus allowing for boolean options). */ const char *ldb_options_find(struct ldb_context *ldb, const char *options[], const char *option_name) { size_t len = strlen(option_name); int i; if (options == NULL) { return NULL; } for (i=0; options[i]; i++) { if (strncmp(option_name, options[i], len) != 0) { continue; } if (options[i][len] == ':' || options[i][len] == '=') { return &options[i][len+1]; } if (options[i][len] == 0) { return &options[i][len]; } } return NULL; } const char **ldb_options_copy(TALLOC_CTX *ctx, const char *options[]) { size_t num_options = 0; const char **copy = NULL; size_t i = 0; if (options == NULL) { return copy; } for (i=0; options[i]; i++) { num_options++; } copy = talloc_zero_array(ctx, const char *, num_options + 1); if (copy == NULL) { return copy; } for (i=0; options[i]; i++) { copy[i] = talloc_strdup(copy, options[i]); if (copy[i] == NULL) { TALLOC_FREE(copy); return copy; } } return copy; } const char **ldb_options_get(struct ldb_context *ldb) { return ldb->options; }