summaryrefslogtreecommitdiff
path: root/toxcore
diff options
context:
space:
mode:
authormannol <eniz_vukovic@hotmail.com>2014-05-31 17:27:22 +0200
committermannol <eniz_vukovic@hotmail.com>2014-05-31 17:27:22 +0200
commitd7c11573751eea005d3b1938ae3298c265d48fd6 (patch)
tree5e24378192854d147e42fd2c44e0a7bd53685bc4 /toxcore
parent2ebefb85b7f5ae28db1e8c11196467efd3c914cf (diff)
Fixed byte order and removed log functions from misc_tools
Diffstat (limited to 'toxcore')
-rw-r--r--toxcore/misc_tools.h36
-rw-r--r--toxcore/util.c58
-rw-r--r--toxcore/util.h15
3 files changed, 74 insertions, 35 deletions
diff --git a/toxcore/misc_tools.h b/toxcore/misc_tools.h
index 4bf28ac7..170dd2b1 100644
--- a/toxcore/misc_tools.h
+++ b/toxcore/misc_tools.h
@@ -28,41 +28,7 @@
28#include <stdint.h> 28#include <stdint.h>
29#include <string.h> /* for memcpy() */ 29#include <string.h> /* for memcpy() */
30 30
31/*********************Debugging Macros******************** 31
32 * wiki.tox.im/index.php/Internal_functions_and_data_structures#Debugging
33 *********************************************************/
34#ifdef DEBUG
35#include <assert.h>
36#include <stdio.h>
37#include <string.h>
38
39#define DEBUG_PRINT(str, ...) do { \
40 char msg[1000]; \
41 sprintf(msg, "%s(): line %d (file %s): %s%%c\n", __FUNCTION__, __LINE__, __FILE__, str); \
42 fprintf(stderr, msg, __VA_ARGS__); \
43 } while (0)
44
45#define WARNING(...) do { \
46 fprintf(stderr, "warning in "); \
47 DEBUG_PRINT(__VA_ARGS__, ' '); \
48 } while (0)
49
50#define INFO(...) do { \
51 DEBUG_PRINT(__VA_ARGS__, ' '); \
52 } while (0)
53
54#undef ERROR
55#define ERROR(exit_status, ...) do { \
56 fprintf(stderr, "error in "); \
57 DEBUG_PRINT(__VA_ARGS__, ' '); \
58 exit(exit_status); \
59 } while (0)
60#else
61#define WARNING(...)
62#define INFO(...)
63#undef ERROR
64#define ERROR(...)
65#endif // DEBUG
66 32
67/************************Linked List*********************** 33/************************Linked List***********************
68 * http://wiki.tox.im/index.php/Internal_functions_and_data_structures#Linked_List 34 * http://wiki.tox.im/index.php/Internal_functions_and_data_structures#Linked_List
diff --git a/toxcore/util.c b/toxcore/util.c
index 7a2db450..f0bb4130 100644
--- a/toxcore/util.c
+++ b/toxcore/util.c
@@ -133,3 +133,61 @@ int load_state(load_state_callback_func load_state_callback, void *outer,
133 133
134 return length == 0 ? 0 : -1; 134 return length == 0 ? 0 : -1;
135}; 135};
136
137/* Converts 4 bytes to uint32_t */
138inline__ void bytes_to_U32(uint32_t *dest, const uint8_t *bytes)
139{
140 *dest =
141 #ifdef WORDS_BIGENDIAN
142 ( ( uint32_t ) * bytes ) |
143 ( ( uint32_t ) * ( bytes + 1 ) << 8 ) |
144 ( ( uint32_t ) * ( bytes + 2 ) << 16 ) |
145 ( ( uint32_t ) * ( bytes + 3 ) << 24 ) ;
146 #else
147 ( ( uint32_t ) * bytes << 24 ) |
148 ( ( uint32_t ) * ( bytes + 1 ) << 16 ) |
149 ( ( uint32_t ) * ( bytes + 2 ) << 8 ) |
150 ( ( uint32_t ) * ( bytes + 3 ) ) ;
151 #endif
152}
153
154/* Converts 2 bytes to uint16_t */
155inline__ void bytes_to_U16(uint16_t *dest, const uint8_t *bytes)
156{
157 *dest =
158 #ifdef WORDS_BIGENDIAN
159 ( ( uint16_t ) * bytes ) |
160 ( ( uint16_t ) * ( bytes + 1 ) << 8 );
161 #else
162 ( ( uint16_t ) * bytes << 8 ) |
163 ( ( uint16_t ) * ( bytes + 1 ) );
164 #endif
165}
166
167/* Convert uint32_t to byte string of size 4 */
168inline__ void U32_to_bytes(uint8_t *dest, uint32_t value)
169{
170 #ifdef WORDS_BIGENDIAN
171 *(dest) = ( value );
172 *(dest + 1) = ( value >> 8 );
173 *(dest + 2) = ( value >> 16 );
174 *(dest + 3) = ( value >> 24 );
175 #else
176 *(dest) = ( value >> 24 );
177 *(dest + 1) = ( value >> 16 );
178 *(dest + 2) = ( value >> 8 );
179 *(dest + 3) = ( value );
180 #endif
181}
182
183/* Convert uint16_t to byte string of size 2 */
184inline__ void U16_to_bytes(uint8_t *dest, uint16_t value)
185{
186 #ifdef WORDS_BIGENDIAN
187 *(dest) = ( value );
188 *(dest + 1) = ( value >> 8 );
189 #else
190 *(dest) = ( value >> 8 );
191 *(dest + 1) = ( value );
192 #endif
193} \ No newline at end of file
diff --git a/toxcore/util.h b/toxcore/util.h
index e40b6968..71c2f5c7 100644
--- a/toxcore/util.h
+++ b/toxcore/util.h
@@ -28,6 +28,8 @@
28#include <stdbool.h> 28#include <stdbool.h>
29#include <stdint.h> 29#include <stdint.h>
30 30
31#define inline__ inline __attribute__((always_inline))
32
31void unix_time_update(); 33void unix_time_update();
32uint64_t unix_time(); 34uint64_t unix_time();
33int is_timeout(uint64_t timestamp, uint64_t timeout); 35int is_timeout(uint64_t timestamp, uint64_t timeout);
@@ -45,4 +47,17 @@ typedef int (*load_state_callback_func)(void *outer, uint8_t *data, uint32_t len
45int load_state(load_state_callback_func load_state_callback, void *outer, 47int load_state(load_state_callback_func load_state_callback, void *outer,
46 uint8_t *data, uint32_t length, uint16_t cookie_inner); 48 uint8_t *data, uint32_t length, uint16_t cookie_inner);
47 49
50/* Converts 4 bytes to uint32_t */
51void bytes_to_U32(uint32_t *dest, const uint8_t *bytes);
52
53/* Converts 2 bytes to uint16_t */
54void bytes_to_U16(uint16_t *dest, const uint8_t *bytes);
55
56/* Convert uint32_t to byte string of size 4 */
57void U32_to_bytes(uint8_t *dest, uint32_t value);
58
59/* Convert uint16_t to byte string of size 2 */
60void U16_to_bytes(uint8_t *dest, uint16_t value);
61
62
48#endif /* __UTIL_H__ */ 63#endif /* __UTIL_H__ */