• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 #ifndef UTILS_H
2 #define UTILS_H
3 
4 ///
5 // Miscellaneous utilities
6 // -----------------------
7 
8 #include <stddef.h>
9 #include <stdarg.h>
10 
11 ///
12 // return the value coresponding to an hexadecimal digit
13 unsigned int hexval(unsigned int c);
14 
15 ///
16 // duplicate a memory buffer in a newly allocated buffer.
17 // @src: a pointer to the memory buffer to be duplicated
18 // @len: the size of the memory buffer to be duplicated
19 // @return: a pointer to a copy of @src allocated via
20 //	:func:`__alloc_bytes()`.
21 void *xmemdup(const void *src, size_t len);
22 
23 ///
24 // duplicate a null-terminated string in a newly allocated buffer.
25 // @src: a pointer to string to be duplicated
26 // @return: a pointer to a copy of @str allocated via
27 //	:func:`__alloc_bytes()`.
28 char *xstrdup(const char *src);
29 
30 ///
31 // printf to allocated string
32 // @fmt: the format followed by its arguments.
33 // @return: the allocated & formatted string.
34 // This function is similar to asprintf() but the resulting string
35 // is allocated with __alloc_bytes().
36 char *xasprintf(const char *fmt, ...);
37 
38 ///
39 // vprintf to allocated string
40 // @fmt: the format
41 // @ap: the variadic arguments
42 // @return: the allocated & formatted string.
43 // This function is similar to asprintf() but the resulting string
44 // is allocated with __alloc_bytes().
45 char *xvasprintf(const char *fmt, va_list ap);
46 
47 #endif
48