s4-ldb: use TALLOC_CTX type instead of 'void'
[kamenim/samba.git] / source4 / lib / ldb / common / ldb_utf8.c
index 1951e6edca657cd9944476cbb15f82847dec10ad..55d8f905d35c9cb222935098650b3aa431cbb558 100644 (file)
@@ -10,7 +10,7 @@
    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
@@ -18,8 +18,7 @@
    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/>.
 */
 
 /*
@@ -32,8 +31,8 @@
  *  Author: Andrew Tridgell
  */
 
-#include "includes.h"
-#include "ldb/include/includes.h"
+#include "ldb_private.h"
+#include "system/locale.h"
 
 
 /*
@@ -41,8 +40,8 @@
   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;
@@ -54,10 +53,10 @@ void ldb_set_utf8_fns(struct ldb_context *ldb,
   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;
@@ -73,9 +72,9 @@ void ldb_set_utf8_default(struct ldb_context *ldb)
        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);
 }
 
 /*
@@ -85,7 +84,7 @@ char *ldb_casefold(struct ldb_context *ldb, void *mem_ctx, const char *s)
 
 int ldb_valid_attr_name(const char *s)
 {
-       int i;
+       size_t i;
 
        if (!s || !s[0])
                return 0;
@@ -110,22 +109,11 @@ int ldb_valid_attr_name(const char *s)
        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;
        }