diff options
-rw-r--r-- | toxcore/Messenger.c | 52 | ||||
-rw-r--r-- | toxcore/Messenger.h | 12 | ||||
-rw-r--r-- | toxcore/tox.c | 19 | ||||
-rw-r--r-- | toxcore/tox.h | 12 |
4 files changed, 93 insertions, 2 deletions
diff --git a/toxcore/Messenger.c b/toxcore/Messenger.c index 19bd7edf..73a1471c 100644 --- a/toxcore/Messenger.c +++ b/toxcore/Messenger.c | |||
@@ -2129,12 +2129,12 @@ uint32_t copy_friendlist(Messenger *m, int *out_list, uint32_t list_size) | |||
2129 | uint32_t ret = 0; | 2129 | uint32_t ret = 0; |
2130 | 2130 | ||
2131 | for (i = 0; i < m->numfriends; i++) { | 2131 | for (i = 0; i < m->numfriends; i++) { |
2132 | if (i >= list_size) { | 2132 | if (ret >= list_size) { |
2133 | break; /* Abandon ship */ | 2133 | break; /* Abandon ship */ |
2134 | } | 2134 | } |
2135 | 2135 | ||
2136 | if (m->friendlist[i].status > 0) { | 2136 | if (m->friendlist[i].status > 0) { |
2137 | out_list[i] = i; | 2137 | out_list[ret] = i; |
2138 | ret++; | 2138 | ret++; |
2139 | } | 2139 | } |
2140 | } | 2140 | } |
@@ -2175,3 +2175,51 @@ int get_friendlist(Messenger *m, int **out_list, uint32_t *out_list_length) | |||
2175 | return 0; | 2175 | return 0; |
2176 | } | 2176 | } |
2177 | 2177 | ||
2178 | /* Return the number of chats in the instance m. | ||
2179 | * You should use this to determine how much memory to allocate | ||
2180 | * for copy_chatlist. */ | ||
2181 | uint32_t count_chatlist(Messenger *m) | ||
2182 | { | ||
2183 | uint32_t ret = 0; | ||
2184 | uint32_t i; | ||
2185 | |||
2186 | for (i = 0; i < m->numchats; i++) { | ||
2187 | if (m->chats[i]) { | ||
2188 | ret++; | ||
2189 | } | ||
2190 | } | ||
2191 | |||
2192 | return ret; | ||
2193 | } | ||
2194 | |||
2195 | /* Copy a list of valid chat IDs into the array out_list. | ||
2196 | * If out_list is NULL, returns 0. | ||
2197 | * Otherwise, returns the number of elements copied. | ||
2198 | * If the array was too small, the contents | ||
2199 | * of out_list will be truncated to list_size. */ | ||
2200 | uint32_t copy_chatlist(Messenger *m, int *out_list, uint32_t list_size) | ||
2201 | { | ||
2202 | if (!out_list) | ||
2203 | return 0; | ||
2204 | |||
2205 | if (m->numchats == 0) { | ||
2206 | return 0; | ||
2207 | } | ||
2208 | |||
2209 | uint32_t i; | ||
2210 | uint32_t ret = 0; | ||
2211 | |||
2212 | for (i = 0; i < m->numchats; i++) { | ||
2213 | if (ret >= list_size) { | ||
2214 | break; /* Abandon ship */ | ||
2215 | } | ||
2216 | |||
2217 | if (m->chats[i]) { | ||
2218 | out_list[ret] = i; | ||
2219 | ret++; | ||
2220 | } | ||
2221 | } | ||
2222 | |||
2223 | return ret; | ||
2224 | } | ||
2225 | |||
diff --git a/toxcore/Messenger.h b/toxcore/Messenger.h index 10ac0eae..3b99b3cf 100644 --- a/toxcore/Messenger.h +++ b/toxcore/Messenger.h | |||
@@ -633,5 +633,17 @@ uint32_t copy_friendlist(Messenger *m, int *out_list, uint32_t list_size); | |||
633 | */ | 633 | */ |
634 | int get_friendlist(Messenger *m, int **out_list, uint32_t *out_list_length); | 634 | int get_friendlist(Messenger *m, int **out_list, uint32_t *out_list_length); |
635 | 635 | ||
636 | /* Return the number of chats in the instance m. | ||
637 | * You should use this to determine how much memory to allocate | ||
638 | * for copy_chatlist. */ | ||
639 | uint32_t count_chatlist(Messenger *m); | ||
640 | |||
641 | /* Copy a list of valid chat IDs into the array out_list. | ||
642 | * If out_list is NULL, returns 0. | ||
643 | * Otherwise, returns the number of elements copied. | ||
644 | * If the array was too small, the contents | ||
645 | * of out_list will be truncated to list_size. */ | ||
646 | uint32_t copy_chatlist(Messenger *m, int *out_list, uint32_t list_size); | ||
647 | |||
636 | #endif | 648 | #endif |
637 | 649 | ||
diff --git a/toxcore/tox.c b/toxcore/tox.c index 6a0c6a62..5e110cbe 100644 --- a/toxcore/tox.c +++ b/toxcore/tox.c | |||
@@ -477,6 +477,25 @@ int tox_group_message_send(Tox *tox, int groupnumber, uint8_t *message, uint32_t | |||
477 | return group_message_send(m, groupnumber, message, length); | 477 | return group_message_send(m, groupnumber, message, length); |
478 | } | 478 | } |
479 | 479 | ||
480 | /* Return the number of chats in the instance m. | ||
481 | * You should use this to determine how much memory to allocate | ||
482 | * for copy_chatlist. */ | ||
483 | uint32_t tox_count_chatlist(Tox *tox) | ||
484 | { | ||
485 | Messenger *m = tox; | ||
486 | return count_chatlist(m); | ||
487 | } | ||
488 | |||
489 | /* Copy a list of valid chat IDs into the array out_list. | ||
490 | * If out_list is NULL, returns 0. | ||
491 | * Otherwise, returns the number of elements copied. | ||
492 | * If the array was too small, the contents | ||
493 | * of out_list will be truncated to list_size. */ | ||
494 | uint32_t tox_copy_chatlist(Tox *tox, int *out_list, uint32_t list_size) | ||
495 | { | ||
496 | Messenger *m = tox; | ||
497 | return copy_chatlist(m, out_list, list_size); | ||
498 | } | ||
480 | 499 | ||
481 | 500 | ||
482 | /****************FILE SENDING FUNCTIONS*****************/ | 501 | /****************FILE SENDING FUNCTIONS*****************/ |
diff --git a/toxcore/tox.h b/toxcore/tox.h index 5d3916b4..97fb912a 100644 --- a/toxcore/tox.h +++ b/toxcore/tox.h | |||
@@ -404,6 +404,18 @@ int tox_join_groupchat(Tox *tox, int friendnumber, uint8_t *friend_group_public_ | |||
404 | * return -1 on failure | 404 | * return -1 on failure |
405 | */ | 405 | */ |
406 | int tox_group_message_send(Tox *tox, int groupnumber, uint8_t *message, uint32_t length); | 406 | int tox_group_message_send(Tox *tox, int groupnumber, uint8_t *message, uint32_t length); |
407 | |||
408 | /* Return the number of chats in the instance m. | ||
409 | * You should use this to determine how much memory to allocate | ||
410 | * for copy_chatlist. */ | ||
411 | uint32_t tox_count_chatlist(Tox *tox); | ||
412 | |||
413 | /* Copy a list of valid chat IDs into the array out_list. | ||
414 | * If out_list is NULL, returns 0. | ||
415 | * Otherwise, returns the number of elements copied. | ||
416 | * If the array was too small, the contents | ||
417 | * of out_list will be truncated to list_size. */ | ||
418 | uint32_t tox_copy_chatlist(Tox *tox, int *out_list, uint32_t list_size); | ||
407 | 419 | ||
408 | 420 | ||
409 | /****************FILE SENDING FUNCTIONS*****************/ | 421 | /****************FILE SENDING FUNCTIONS*****************/ |