diff options
Diffstat (limited to 'src/gnunet_chat_lib.c')
-rw-r--r-- | src/gnunet_chat_lib.c | 68 |
1 files changed, 63 insertions, 5 deletions
diff --git a/src/gnunet_chat_lib.c b/src/gnunet_chat_lib.c index 3e97d3e..794b170 100644 --- a/src/gnunet_chat_lib.c +++ b/src/gnunet_chat_lib.c | |||
@@ -948,11 +948,12 @@ GNUNET_CHAT_contact_set_blocked (struct GNUNET_CHAT_Contact *contact, | |||
948 | 948 | ||
949 | struct GNUNET_CHAT_ContactIterateContexts it; | 949 | struct GNUNET_CHAT_ContactIterateContexts it; |
950 | it.contact = contact; | 950 | it.contact = contact; |
951 | it.tag = NULL; | ||
951 | 952 | ||
952 | if (GNUNET_NO == blocked) | 953 | if (GNUNET_NO == blocked) |
953 | it.cb = contact_unblock; | 954 | it.cb = contact_untag; |
954 | else if (GNUNET_YES == blocked) | 955 | else if (GNUNET_YES == blocked) |
955 | it.cb = contact_block; | 956 | it.cb = contact_tag; |
956 | else | 957 | else |
957 | return; | 958 | return; |
958 | 959 | ||
@@ -972,7 +973,64 @@ GNUNET_CHAT_contact_is_blocked (const struct GNUNET_CHAT_Contact *contact) | |||
972 | if (!contact) | 973 | if (!contact) |
973 | return GNUNET_SYSERR; | 974 | return GNUNET_SYSERR; |
974 | 975 | ||
975 | return contact_is_blocked(contact, NULL); | 976 | return contact_is_tagged(contact, NULL, NULL); |
977 | } | ||
978 | |||
979 | |||
980 | void | ||
981 | GNUNET_CHAT_contact_tag (struct GNUNET_CHAT_Contact *contact, | ||
982 | const char *tag) | ||
983 | { | ||
984 | GNUNET_CHAT_VERSION_ASSERT(); | ||
985 | |||
986 | if ((!contact) || (!tag) || (!tag[0])) | ||
987 | return; | ||
988 | |||
989 | struct GNUNET_CHAT_ContactIterateContexts it; | ||
990 | it.contact = contact; | ||
991 | it.tag = tag; | ||
992 | it.cb = contact_tag; | ||
993 | |||
994 | GNUNET_CONTAINER_multihashmap_iterate( | ||
995 | contact->joined, | ||
996 | it_contact_iterate_contexts, | ||
997 | &it | ||
998 | ); | ||
999 | } | ||
1000 | |||
1001 | |||
1002 | void | ||
1003 | GNUNET_CHAT_contact_untag (struct GNUNET_CHAT_Contact *contact, | ||
1004 | const char *tag) | ||
1005 | { | ||
1006 | GNUNET_CHAT_VERSION_ASSERT(); | ||
1007 | |||
1008 | if ((!contact) || (!tag) || (!tag[0])) | ||
1009 | return; | ||
1010 | |||
1011 | struct GNUNET_CHAT_ContactIterateContexts it; | ||
1012 | it.contact = contact; | ||
1013 | it.tag = tag; | ||
1014 | it.cb = contact_untag; | ||
1015 | |||
1016 | GNUNET_CONTAINER_multihashmap_iterate( | ||
1017 | contact->joined, | ||
1018 | it_contact_iterate_contexts, | ||
1019 | &it | ||
1020 | ); | ||
1021 | } | ||
1022 | |||
1023 | |||
1024 | enum GNUNET_GenericReturnValue | ||
1025 | GNUNET_CHAT_contact_is_tagged (const struct GNUNET_CHAT_Contact *contact, | ||
1026 | const char *tag) | ||
1027 | { | ||
1028 | GNUNET_CHAT_VERSION_ASSERT(); | ||
1029 | |||
1030 | if ((!contact) || (!tag) || (!tag[0])) | ||
1031 | return GNUNET_SYSERR; | ||
1032 | |||
1033 | return contact_is_tagged(contact, NULL, tag); | ||
976 | } | 1034 | } |
977 | 1035 | ||
978 | 1036 | ||
@@ -1623,7 +1681,7 @@ GNUNET_CHAT_message_get_sender (const struct GNUNET_CHAT_Message *message) | |||
1623 | { | 1681 | { |
1624 | GNUNET_CHAT_VERSION_ASSERT(); | 1682 | GNUNET_CHAT_VERSION_ASSERT(); |
1625 | 1683 | ||
1626 | if ((!message) || (GNUNET_CHAT_FLAG_NONE != message->flag) || | 1684 | if ((!message) || (GNUNET_YES != message_has_msg(message)) || |
1627 | (!(message->context)) || (!(message->context->room))) | 1685 | (!(message->context)) || (!(message->context->room))) |
1628 | return NULL; | 1686 | return NULL; |
1629 | 1687 | ||
@@ -1643,7 +1701,7 @@ GNUNET_CHAT_message_get_recipient (const struct GNUNET_CHAT_Message *message) | |||
1643 | { | 1701 | { |
1644 | GNUNET_CHAT_VERSION_ASSERT(); | 1702 | GNUNET_CHAT_VERSION_ASSERT(); |
1645 | 1703 | ||
1646 | if ((!message) || (GNUNET_CHAT_FLAG_NONE != message->flag) || | 1704 | if ((!message) || (GNUNET_YES != message_has_msg(message)) || |
1647 | (!(message->context)) || (!(message->context->room))) | 1705 | (!(message->context)) || (!(message->context->room))) |
1648 | return NULL; | 1706 | return NULL; |
1649 | 1707 | ||