From e55d071e5485a937efd427d159b76c208cccdcce Mon Sep 17 00:00:00 2001 From: George Hazan Date: Sun, 24 Jul 2022 16:44:24 +0300 Subject: fixes #3118 (Update toxcore to 0.2.18) --- protocols/Tox/libtox/src/toxcore/util.h | 37 ++++++++++++++++++++++++++++----- 1 file changed, 32 insertions(+), 5 deletions(-) (limited to 'protocols/Tox/libtox/src/toxcore/util.h') diff --git a/protocols/Tox/libtox/src/toxcore/util.h b/protocols/Tox/libtox/src/toxcore/util.h index bcae4f4a67..588feb5694 100644 --- a/protocols/Tox/libtox/src/toxcore/util.h +++ b/protocols/Tox/libtox/src/toxcore/util.h @@ -12,20 +12,33 @@ #include #include +#include #include -#include "logger.h" +#include "attributes.h" #ifdef __cplusplus extern "C" { #endif -/** id functions */ -bool id_equal(const uint8_t *dest, const uint8_t *src); -uint32_t id_copy(uint8_t *dest, const uint8_t *src); /* return value is CLIENT_ID_SIZE */ +bool is_power_of_2(uint64_t x); + +/** @brief Frees all pointers in a uint8_t pointer array, as well as the array itself. */ +nullable(1) +void free_uint8_t_pointer_array(uint8_t **ary, size_t n_items); /** Returns -1 if failed or 0 if success */ -int create_recursive_mutex(pthread_mutex_t *mutex); +non_null() int create_recursive_mutex(pthread_mutex_t *mutex); + +/** + * @brief Checks whether two buffers are the same length and contents. + * + * Calls `memcmp` after checking the sizes are equal. + * + * @retval true if sizes and contents are equal. + * @retval false otherwise. + */ +non_null() bool memeq(const uint8_t *a, size_t a_size, const uint8_t *b, size_t b_size); // Safe min/max functions with specific types. This forces the conversion to the // desired type before the comparison expression, giving the choice of @@ -47,6 +60,20 @@ uint16_t min_u16(uint16_t a, uint16_t b); uint32_t min_u32(uint32_t a, uint32_t b); uint64_t min_u64(uint64_t a, uint64_t b); +/** @brief Returns a 32-bit hash of key of size len */ +non_null() +uint32_t jenkins_one_at_a_time_hash(const uint8_t *key, size_t len); + +/** @brief Computes a checksum of a byte array. + * + * @param data The byte array used to compute the checksum. + * @param length The length in bytes of the passed data. + * + * @retval The resulting checksum. + */ +non_null() +uint16_t data_checksum(const uint8_t *data, uint32_t length); + #ifdef __cplusplus } // extern "C" #endif -- cgit v1.2.3