diff options
| author | Nalin Dahyabhai <nalin.dahyabhai@pobox.com> | 2008-04-02 18:08:34 -0400 |
|---|---|---|
| committer | Nalin Dahyabhai <nalin.dahyabhai@pobox.com> | 2008-04-02 18:08:34 -0400 |
| commit | 22ff4ffb24db349456ffdd207c5b5c9119d85e49 (patch) | |
| tree | bfa0904b0e401f0b7b2730368f799efb1d455151 /src | |
| parent | f963341a947548a1427f2ba7d53073cf7f65d893 (diff) | |
| download | slapi-nis-22ff4ffb24db349456ffdd207c5b5c9119d85e49.tar.gz slapi-nis-22ff4ffb24db349456ffdd207c5b5c9119d85e49.tar.xz slapi-nis-22ff4ffb24db349456ffdd207c5b5c9119d85e49.zip | |
- start making it possible to add entries on the fly
Diffstat (limited to 'src')
| -rw-r--r-- | src/map.c | 41 |
1 files changed, 41 insertions, 0 deletions
@@ -476,6 +476,7 @@ map_data_unset_map_entry(struct plugin_state *state, free(entry); } } + static void map_data_unset_entry(struct plugin_state *state, const char *domain_name, @@ -489,6 +490,7 @@ map_data_unset_entry(struct plugin_state *state, entry = map_data_find_map_entry(state, map, key_len, key); map_data_unset_map_entry(state, map, entry); } + static void map_data_unset_entry_dn(struct plugin_state *state, const char *domain_name, @@ -502,6 +504,45 @@ map_data_unset_entry_dn(struct plugin_state *state, map_data_unset_map_entry(state, map, entry); } +static void +map_data_set_entry_dn(struct plugin_state *state, + const char *domain_name, + const char *map_name, + const char *dn, + unsigned int key_len, + char *key, + unsigned int value_len, + char *value) +{ + struct map *map; + struct entry *entry; + map = map_data_find_map(state, domain_name, map_name); + entry = map_data_find_map_entry_dn(state, map, dn); + if (entry != NULL) { + free(entry->key); + free(entry->value); + entry->key = key; + entry->key_len = key_len; + entry->value = value; + entry->value_len = value_len; + } else { + entry = malloc(sizeof(*entry)); + if (entry != NULL) { + memset(entry, 0, sizeof(*entry)); + entry->dn = strdup(dn); + entry->key = key; + entry->key_len = key_len; + entry->value = value; + entry->value_len = value_len; + entry->next = map->entries; + if (map->entries != NULL) { + map->entries->prev = entry; + } + map->entries = entry; + } + } +} + void map_init(struct plugin_state *state) { |
