summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Metzmacher <metze@samba.org>2007-01-13 15:03:00 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 14:40:33 -0500
commit7dd80e872dacacf95d16b0460119296275a18ab0 (patch)
treeb09a80b20149dc575aec7a6b4bfca869964e2de0
parentbc4af8dd5ef900f0ab46f4ddaf91e33772a3e029 (diff)
downloadsamba-7dd80e872dacacf95d16b0460119296275a18ab0.tar.gz
samba-7dd80e872dacacf95d16b0460119296275a18ab0.tar.bz2
samba-7dd80e872dacacf95d16b0460119296275a18ab0.zip
r20731: we need the complex memmove() handling for removing an attribute only in one place
metze (This used to be commit dfdfdd6cefeac2974a4b3425a49e3dd93ad7e952)
-rw-r--r--source4/lib/ldb/common/ldb_msg.c28
1 files changed, 12 insertions, 16 deletions
diff --git a/source4/lib/ldb/common/ldb_msg.c b/source4/lib/ldb/common/ldb_msg.c
index bed3647d3a..077446f8ca 100644
--- a/source4/lib/ldb/common/ldb_msg.c
+++ b/source4/lib/ldb/common/ldb_msg.c
@@ -728,22 +728,6 @@ int ldb_msg_copy_attr(struct ldb_message *msg, const char *attr, const char *rep
return ldb_msg_rename_attr(msg, attr, replace);
}
-
-/*
- remove the specified attribute in a search result
-*/
-void ldb_msg_remove_attr(struct ldb_message *msg, const char *attr)
-{
- struct ldb_message_element *el = ldb_msg_find_element(msg, attr);
- if (el) {
- int n = (el - msg->elements);
- if (n != msg->num_elements-1) {
- memmove(el, el+1, ((msg->num_elements-1) - n)*sizeof(*el));
- }
- msg->num_elements--;
- }
-}
-
/*
remove the specified element in a search result
*/
@@ -756,6 +740,18 @@ void ldb_msg_remove_element(struct ldb_message *msg, struct ldb_message_element
msg->num_elements--;
}
+
+/*
+ remove the specified attribute in a search result
+*/
+void ldb_msg_remove_attr(struct ldb_message *msg, const char *attr)
+{
+ struct ldb_message_element *el = ldb_msg_find_element(msg, attr);
+ if (el) {
+ ldb_msg_remove_element(msg, el);
+ }
+}
+
/*
return a LDAP formatted GeneralizedTime string
*/