Full_Name: Marcel Wysocki Version: 2.4.21 OS: GNU/Linux URL: ftp://ftp.openldap.org/incoming/ Submission from: (NULL) (88.79.126.162)
I noticed that all of the SLAPI functions do manipulate LDAPMod** are missing. from the fedora ds slapi-plugin.h:
/* * LDAPMod manipulation routines */ Slapi_Mods* slapi_mods_new( void ); void slapi_mods_init(Slapi_Mods *smods, int initCount); void slapi_mods_init_byref(Slapi_Mods *smods, LDAPMod **mods); void slapi_mods_init_passin(Slapi_Mods *smods, LDAPMod **mods); void slapi_mods_free(Slapi_Mods **smods); void slapi_mods_done(Slapi_Mods *smods); void slapi_mods_insert_at(Slapi_Mods *smods, LDAPMod *mod, int pos); void slapi_mods_insert_smod_at(Slapi_Mods *smods, Slapi_Mod *smod, int pos); void slapi_mods_insert_before(Slapi_Mods *smods, LDAPMod *mod); void slapi_mods_insert_smod_before(Slapi_Mods *smods, Slapi_Mod *smod); void slapi_mods_insert_after(Slapi_Mods *smods, LDAPMod *mod); void slapi_mods_insert_after(Slapi_Mods *smods, LDAPMod *mod); void slapi_mods_add( Slapi_Mods *smods, int modtype, const char *type, unsigned long len, const char *val); void slapi_mods_add_ldapmod(Slapi_Mods *smods, LDAPMod *mod); void slapi_mods_add_modbvps( Slapi_Mods *smods, int modtype, const char *type, struct berval **bvps ); void slapi_mods_add_mod_values( Slapi_Mods *smods, int modtype, const char *type, Slapi_Value **va ); void slapi_mods_add_smod(Slapi_Mods *smods, Slapi_Mod *smod); void slapi_mods_add_string( Slapi_Mods *smods, int modtype, const char *type, const char *val); void slapi_mods_remove(Slapi_Mods *smods); LDAPMod *slapi_mods_get_first_mod(Slapi_Mods *smods); LDAPMod *slapi_mods_get_next_mod(Slapi_Mods *smods); Slapi_Mod *slapi_mods_get_first_smod(Slapi_Mods *smods, Slapi_Mod *smod); Slapi_Mod *slapi_mods_get_next_smod(Slapi_Mods *smods, Slapi_Mod *smod); void slapi_mods_iterator_backone(Slapi_Mods *smods); LDAPMod **slapi_mods_get_ldapmods_byref(Slapi_Mods *smods); LDAPMod **slapi_mods_get_ldapmods_passout(Slapi_Mods *smods); int slapi_mods_get_num_mods(const Slapi_Mods *smods); void slapi_mods_dump(const Slapi_Mods *smods, const char *text);
Slapi_Mod* slapi_mod_new( void ); void slapi_mod_init(Slapi_Mod *smod, int initCount); void slapi_mod_init_byval(Slapi_Mod *smod, const LDAPMod *mod); void slapi_mod_init_byref(Slapi_Mod *smod, LDAPMod *mod); void slapi_mod_init_passin(Slapi_Mod *smod, LDAPMod *mod); /* init a mod and set the mod values to be a copy of the given valueset */ void slapi_mod_init_valueset_byval(Slapi_Mod *smod, int op, const char *type, const Slapi_ValueSet *svs); void slapi_mod_add_value(Slapi_Mod *smod, const struct berval *val); void slapi_mod_remove_value(Slapi_Mod *smod); struct berval *slapi_mod_get_first_value(Slapi_Mod *smod); struct berval *slapi_mod_get_next_value(Slapi_Mod *smod); const char *slapi_mod_get_type(const Slapi_Mod *smod); int slapi_mod_get_operation(const Slapi_Mod *smod); void slapi_mod_set_type(Slapi_Mod *smod, const char *type); void slapi_mod_set_operation(Slapi_Mod *smod, int op); int slapi_mod_get_num_values(const Slapi_Mod *smod); const LDAPMod *slapi_mod_get_ldapmod_byref(const Slapi_Mod *smod); LDAPMod *slapi_mod_get_ldapmod_passout(Slapi_Mod *smod); void slapi_mod_free(Slapi_Mod **smod); void slapi_mod_done(Slapi_Mod *mod); int slapi_mod_isvalid(const Slapi_Mod *mod); void slapi_mod_dump(LDAPMod *mod, int n);
/* helper functions to translate between entry and a set of mods */ int slapi_mods2entry(Slapi_Entry **e, const char *dn, LDAPMod **attrs); int slapi_entry2mods(const Slapi_Entry *e, char **dn, LDAPMod ***attrs);
there might be some more missing. most of it can be found in fedora ds's modutils.c should be worth porting to openldap