]> git.sur5r.net Git - openldap/blobdiff - contrib/slapi-plugins/addrdnvalues/addrdnvalues.c
Merge remote branch 'origin/mdb.master'
[openldap] / contrib / slapi-plugins / addrdnvalues / addrdnvalues.c
index 6ca8529f62cfe46c2cdd2d46f428ea775fc6afca..c3e97f6ca38235c6ba8588a43cca58413b44bf04 100644 (file)
@@ -1,5 +1,8 @@
+/* addrdnvalues.c */
 /* $OpenLDAP$ */
-/*
+/* This work is part of OpenLDAP Software <http://www.openldap.org/>.
+ *
+ * Copyright 2003-2012 The OpenLDAP Foundation.
  * Copyright 2003-2004 PADL Software Pty Ltd.
  * All rights reserved.
  *
  * top-level directory of the distribution or, alternatively, at
  * <http://www.OpenLDAP.org/license.html>.
  */
-/* (C) Copyright PADL Software Pty Ltd. 2003
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that this notice is preserved
- * and that due credit is given to PADL Software Pty Ltd. This software
- * is provided ``as is'' without express or implied warranty.
+/* ACKNOWLEDGEMENTS:
+ * This work was initially developed by Luke Howard of PADL Software
+ * for inclusion in OpenLDAP Software.
  */
 
 #include <string.h>
@@ -39,9 +40,6 @@ static int addrdnvalues_preop_add(Slapi_PBlock *pb)
 {
        int rc;
        Slapi_Entry *e;
-       char *szDN;
-       LDAPDN dn;
-       int i;
 
        if (slapi_pblock_get(pb, SLAPI_ADD_ENTRY, &e) != 0) {
                slapi_log_error(SLAPI_LOG_PLUGIN, "addrdnvalues_preop_add",
@@ -49,8 +47,7 @@ static int addrdnvalues_preop_add(Slapi_PBlock *pb)
                return -1;
        }
 
-       szDN = slapi_entry_get_dn(e);
-       rc = ldap_str2dn(szDN, &dn, LDAP_DN_FORMAT_LDAPV3);
+       rc = slapi_entry_add_rdn_values(e);
        if (rc != LDAP_SUCCESS) {
                slapi_send_ldap_result(pb, LDAP_OTHER, NULL,
                        "Failed to parse distinguished name", 0, NULL);
@@ -60,32 +57,6 @@ static int addrdnvalues_preop_add(Slapi_PBlock *pb)
                return -1;
        }
 
-       if (dn[0] != NULL) {
-               LDAPRDN rdn = dn[0];
-
-               for (i = 0; rdn[i] != NULL; i++) {
-                       LDAPAVA *ava = &rdn[0][i];
-                       struct berval *vals[2];
-                       Slapi_Attr *a = NULL;
-
-                       /* 0 means attr exists */
-                       if (slapi_entry_attr_find(e, ava->la_attr.bv_val, &a) == 0 &&
-                           a != NULL &&
-                           slapi_attr_value_find(a, &ava->la_value) == 0)
-                       {
-                               /* RDN in entry */
-                               continue;
-                       } /* else RDN not in entry */
-
-                       vals[0] = &ava->la_value;
-                       vals[1] = NULL;
-
-                       slapi_entry_attr_merge(e, ava->la_attr.bv_val, vals);
-               }
-       }
-
-       ldap_dnfree(dn);
-
        return 0;
 }