X-Git-Url: https://git.notmuchmail.org/git?p=notmuch;a=blobdiff_plain;f=lib%2Fmessage-property.cc;h=35eaf3c60f3f43f72c0cae818a77bc09a5e260dd;hp=1f04a20717b4f397a700b68908c835f633fb6b11;hb=9e158fb6942cd74a9babc43e3c8e7bfc9125212a;hpb=b8bb6d796458732622f80464dd808b3e02f57d9d diff --git a/lib/message-property.cc b/lib/message-property.cc index 1f04a207..35eaf3c6 100644 --- a/lib/message-property.cc +++ b/lib/message-property.cc @@ -38,7 +38,7 @@ notmuch_message_get_property (notmuch_message_t *message, const char *key, const static notmuch_status_t _notmuch_message_modify_property (notmuch_message_t *message, const char *key, const char *value, - notmuch_bool_t delete_it) + bool delete_it) { notmuch_private_status_t private_status; notmuch_status_t status; @@ -51,7 +51,7 @@ _notmuch_message_modify_property (notmuch_message_t *message, const char *key, c if (key == NULL || value == NULL) return NOTMUCH_STATUS_NULL_POINTER; - if (index (key, '=')) + if (strchr (key, '=')) return NOTMUCH_STATUS_ILLEGAL_ARGUMENT; term = talloc_asprintf (message, "%s=%s", key, value); @@ -76,17 +76,18 @@ _notmuch_message_modify_property (notmuch_message_t *message, const char *key, c notmuch_status_t notmuch_message_add_property (notmuch_message_t *message, const char *key, const char *value) { - return _notmuch_message_modify_property (message, key, value, FALSE); + return _notmuch_message_modify_property (message, key, value, false); } notmuch_status_t notmuch_message_remove_property (notmuch_message_t *message, const char *key, const char *value) { - return _notmuch_message_modify_property (message, key, value, TRUE); + return _notmuch_message_modify_property (message, key, value, true); } +static notmuch_status_t -notmuch_message_remove_all_properties (notmuch_message_t *message, const char *key) +_notmuch_message_remove_all_properties (notmuch_message_t *message, const char *key, bool prefix) { notmuch_status_t status; const char * term_prefix; @@ -97,7 +98,8 @@ notmuch_message_remove_all_properties (notmuch_message_t *message, const char *k _notmuch_message_invalidate_metadata (message, "property"); if (key) - term_prefix = talloc_asprintf (message, "%s%s=", _find_prefix ("property"), key); + term_prefix = talloc_asprintf (message, "%s%s%s", _find_prefix ("property"), key, + prefix ? "" : "="); else term_prefix = _find_prefix ("property"); @@ -106,3 +108,53 @@ notmuch_message_remove_all_properties (notmuch_message_t *message, const char *k return NOTMUCH_STATUS_SUCCESS; } + +notmuch_status_t +notmuch_message_remove_all_properties (notmuch_message_t *message, const char *key) +{ + return _notmuch_message_remove_all_properties (message, key, false); +} + +notmuch_status_t +notmuch_message_remove_all_properties_with_prefix (notmuch_message_t *message, const char *prefix) +{ + return _notmuch_message_remove_all_properties (message, prefix, true); +} + +notmuch_message_properties_t * +notmuch_message_get_properties (notmuch_message_t *message, const char *key, notmuch_bool_t exact) +{ + notmuch_string_map_t *map; + map = _notmuch_message_property_map (message); + return _notmuch_string_map_iterator_create (map, key, exact); +} + +notmuch_bool_t +notmuch_message_properties_valid (notmuch_message_properties_t *properties) +{ + return _notmuch_string_map_iterator_valid (properties); +} + +void +notmuch_message_properties_move_to_next (notmuch_message_properties_t *properties) +{ + return _notmuch_string_map_iterator_move_to_next (properties); +} + +const char * +notmuch_message_properties_key (notmuch_message_properties_t *properties) +{ + return _notmuch_string_map_iterator_key (properties); +} + +const char * +notmuch_message_properties_value (notmuch_message_properties_t *properties) +{ + return _notmuch_string_map_iterator_value (properties); +} + +void +notmuch_message_properties_destroy (notmuch_message_properties_t *properties) +{ + _notmuch_string_map_iterator_destroy (properties); +}