summaryrefslogtreecommitdiffstats
path: root/src/map.c
diff options
context:
space:
mode:
authorNalin Dahyabhai <nalin@localhost.localdomain>2008-04-23 16:06:25 -0400
committerNalin Dahyabhai <nalin@localhost.localdomain>2008-04-23 16:06:25 -0400
commit47980ce9afc677ca6ef93f7d95b0174f24441d74 (patch)
tree4aa7dc158bda98521bd92c9e2d2e257e815d78cc /src/map.c
parent1ed71edbd0cb40ac00a4fd8f3664bfc179fc1de1 (diff)
downloadslapi-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.c17
1 files changed, 16 insertions, 1 deletions
diff --git a/src/map.c b/src/map.c
index 0caf00c..10be1be 100644
--- a/src/map.c
+++ b/src/map.c
@@ -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;
}
}