diff options
author | Nalin Dahyabhai <nalin@localhost.localdomain> | 2008-04-23 16:06:25 -0400 |
---|---|---|
committer | Nalin Dahyabhai <nalin@localhost.localdomain> | 2008-04-23 16:06:25 -0400 |
commit | 47980ce9afc677ca6ef93f7d95b0174f24441d74 (patch) | |
tree | 4aa7dc158bda98521bd92c9e2d2e257e815d78cc /src/map.c | |
parent | 1ed71edbd0cb40ac00a4fd8f3664bfc179fc1de1 (diff) | |
download | slapi-nis-47980ce9afc677ca6ef93f7d95b0174f24441d74.tar.gz slapi-nis-47980ce9afc677ca6ef93f7d95b0174f24441d74.tar.xz slapi-nis-47980ce9afc677ca6ef93f7d95b0174f24441d74.zip |
- add some callback data to map definitions
Diffstat (limited to 'src/map.c')
-rw-r--r-- | src/map.c | 17 |
1 files changed, 16 insertions, 1 deletions
@@ -33,6 +33,8 @@ struct { char *value; unsigned int value_len; } *entries; + void *backend_data; + void (*free_backend_data)(void *backend_data); } *maps; int n_maps; } *domains; @@ -276,6 +278,9 @@ map_data_unset_map(struct plugin_state *state, map = &domain->maps[i]; /* Free the contents. */ free(map->name); + if (map->free_backend_data != NULL) { + map->free_backend_data(map->backend_data); + } map_data_clear_map_map(state, map); /* Close the hole in the array. */ domain->n_maps--; @@ -314,7 +319,9 @@ map_data_unset_map(struct plugin_state *state, void map_data_set_map(struct plugin_state *state, const char *domain_name, - const char *map_name) + const char *map_name, + void *backend_data, + void (*free_backend_data)(void *backend_data)) { struct domain *domain, *domains; struct map *map, *maps; @@ -368,6 +375,8 @@ map_data_set_map(struct plugin_state *state, map = &maps[domain->n_maps]; memset(map, 0, sizeof(*map)); map->name = strdup(map_name); + map->backend_data = backend_data; + map->free_backend_data = free_backend_data; if (map->name != NULL) { /* Copy in existing data. */ memcpy(maps, domain->maps, @@ -382,6 +391,12 @@ map_data_set_map(struct plugin_state *state, return; } } + } else { + if (map->free_backend_data != NULL) { + map->free_backend_data(map->backend_data); + } + map->backend_data = backend_data; + map->free_backend_data = free_backend_data; } } |