mirror of
https://git.proxmox.com/git/mirror_corosync
synced 2025-10-12 23:59:11 +00:00
icmap: Add map copy function
Signed-off-by: Jan Friesse <jfriesse@redhat.com> Reviewed-by: Christine Caulfield <ccaulfie@redhat.com>
This commit is contained in:
parent
e363f8b06d
commit
26ef8e15db
34
exec/icmap.c
34
exec/icmap.c
@ -1280,3 +1280,37 @@ int icmap_is_key_ro(const char *key_name)
|
||||
return (CS_FALSE);
|
||||
|
||||
}
|
||||
|
||||
cs_error_t icmap_copy_map(icmap_map_t dst_map, const icmap_map_t src_map)
|
||||
{
|
||||
icmap_iter_t iter;
|
||||
size_t value_len;
|
||||
icmap_value_types_t value_type;
|
||||
const char *key_name;
|
||||
cs_error_t err;
|
||||
void *value;
|
||||
|
||||
iter = icmap_iter_init_r(src_map, NULL);
|
||||
if (iter == NULL) {
|
||||
return (CS_ERR_NO_MEMORY);
|
||||
}
|
||||
|
||||
err = CS_OK;
|
||||
|
||||
while ((key_name = icmap_iter_next(iter, &value_len, &value_type)) != NULL) {
|
||||
err = icmap_get_ref_r(src_map, key_name, &value, &value_len, &value_type);
|
||||
if (err != CS_OK) {
|
||||
goto exit_iter_finalize;
|
||||
}
|
||||
|
||||
err = icmap_set_r(dst_map, key_name, value, value_len, value_type);
|
||||
if (err != CS_OK) {
|
||||
goto exit_iter_finalize;
|
||||
}
|
||||
}
|
||||
|
||||
exit_iter_finalize:
|
||||
icmap_iter_finalize(iter);
|
||||
|
||||
return (err);
|
||||
}
|
||||
|
@ -368,6 +368,11 @@ extern int icmap_is_key_ro(const char *key_name);
|
||||
*/
|
||||
extern void icmap_convert_name_to_valid_name(char *key_name);
|
||||
|
||||
/*
|
||||
* Copy content of src_map icmap to dst_map icmap.
|
||||
*/
|
||||
extern cs_error_t icmap_copy_map(icmap_map_t dst_map, const icmap_map_t src_map);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user