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 2 of the License, or (at your option) any later version.
+ 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
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, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ License along with this library; if not, see <http://www.gnu.org/licenses/>.
*/
/*
* Author: Andrew Tridgell
*/
-#include "includes.h"
-#include "ldb/include/includes.h"
+#include "ldb_private.h"
+#include "system/locale.h"
/*
function to handle utf8 caseless comparisons
*/
void ldb_set_utf8_fns(struct ldb_context *ldb,
- void *context,
- char *(*casefold)(void *, void *, const char *))
+ void *context,
+ char *(*casefold)(void *, void *, const char *, size_t))
{
if (context)
ldb->utf8_fns.context = context;
a simple case folding function
NOTE: does not handle UTF8
*/
-char *ldb_casefold_default(void *context, void *mem_ctx, const char *s)
+char *ldb_casefold_default(void *context, TALLOC_CTX *mem_ctx, const char *s, size_t n)
{
- int i;
- char *ret = talloc_strdup(mem_ctx, s);
+ size_t i;
+ char *ret = talloc_strndup(mem_ctx, s, n);
if (!s) {
errno = ENOMEM;
return NULL;
ldb_set_utf8_fns(ldb, NULL, ldb_casefold_default);
}
-char *ldb_casefold(struct ldb_context *ldb, void *mem_ctx, const char *s)
+char *ldb_casefold(struct ldb_context *ldb, TALLOC_CTX *mem_ctx, const char *s, size_t n)
{
- return ldb->utf8_fns.casefold(ldb->utf8_fns.context, mem_ctx, s);
+ return ldb->utf8_fns.casefold(ldb->utf8_fns.context, mem_ctx, s, n);
}
/*
int ldb_valid_attr_name(const char *s)
{
- int i;
+ size_t i;
if (!s || !s[0])
return 0;
return 1;
}
-/*
- compare two attribute names
- attribute names are restricted by rfc2251 so using
- strcasecmp and toupper here is ok.
- return 0 for match
-*/
-int ldb_attr_cmp(const char *attr1, const char *attr2)
+char *ldb_attr_casefold(TALLOC_CTX *mem_ctx, const char *s)
{
- return strcasecmp(attr1, attr2);
-}
-
-char *ldb_attr_casefold(void *mem_ctx, const char *s)
-{
- int i;
+ size_t i;
char *ret = talloc_strdup(mem_ctx, s);
- if (!s) {
+ if (!ret) {
errno = ENOMEM;
return NULL;
}