1
0
mirror of https://github.com/samba-team/samba.git synced 2025-03-08 04:58:40 +03:00

s4:ldb: add ldb_parse_tree_copy_shallow() and change version to 0.9.7

metze
This commit is contained in:
Stefan Metzmacher 2009-09-20 05:41:42 +02:00
parent c14b2eb8dd
commit 46dab92a2d
3 changed files with 65 additions and 1 deletions

View File

@ -818,3 +818,61 @@ void ldb_parse_tree_attr_replace(struct ldb_parse_tree *tree,
break;
}
}
/*
shallow copy a tree - copying only the elements array so that the caller
can safely add new elements without changing the message
*/
struct ldb_parse_tree *ldb_parse_tree_copy_shallow(TALLOC_CTX *mem_ctx,
const struct ldb_parse_tree *ot)
{
int i;
struct ldb_parse_tree *nt;
nt = talloc(mem_ctx, struct ldb_parse_tree);
if (!nt) {
return NULL;
}
*nt = *ot;
switch (ot->operation) {
case LDB_OP_AND:
case LDB_OP_OR:
nt->u.list.elements = talloc_array(nt, struct ldb_parse_tree,
ot->u.list.num_elements);
if (!nt->u.list.elements) {
talloc_free(nt);
return NULL;
}
for (i=0;i<ot->u.list.num_elements;i++) {
nt->u.list.elements[i] =
ldb_parse_tree_copy_shallow(nt->u.list.elements,
ot->u.list.elements[i]);
if (!nt->u.list.elements[i]) {
talloc_free(nt);
return NULL;
}
}
break;
case LDB_OP_NOT:
nt->u.isnot.child = ldb_parse_tree_copy_shallow(nt,
ot->u.isnot.child);
if (!nt->u.isnot.child) {
talloc_free(nt);
return NULL;
}
break;
case LDB_OP_EQUALITY:
case LDB_OP_GREATER:
case LDB_OP_LESS:
case LDB_OP_APPROX:
case LDB_OP_SUBSTRING:
case LDB_OP_PRESENT:
case LDB_OP_EXTENDED:
break;
}
return nt;
}

View File

@ -11,7 +11,7 @@ AC_DEFUN([SMB_MODULE_DEFAULT], [echo -n ""])
AC_DEFUN([SMB_LIBRARY_ENABLE], [echo -n ""])
AC_DEFUN([SMB_EXT_LIB], [echo -n ""])
AC_DEFUN([SMB_ENABLE], [echo -n ""])
AC_INIT(ldb, 0.9.6)
AC_INIT(ldb, 0.9.7)
AC_CONFIG_SRCDIR([common/ldb.c])
AC_LIBREPLACE_ALL_CHECKS

View File

@ -1835,6 +1835,12 @@ void ldb_parse_tree_attr_replace(struct ldb_parse_tree *tree,
const char *attr,
const char *replace);
/*
shallow copy a tree - copying only the elements array so that the caller
can safely add new elements without changing the message
*/
struct ldb_parse_tree *ldb_parse_tree_copy_shallow(TALLOC_CTX *mem_ctx,
const struct ldb_parse_tree *ot);
/**
Convert a time structure to a string