xref: /illumos-gate/usr/src/tools/smatch/src/utils.h (revision c85f09cc)
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 // duplicate a memory buffer in a newly allocated buffer.
13 // @src: a pointer to the memory buffer to be duplicated
14 // @len: the size of the memory buffer to be duplicated
15 // @return: a pointer to a copy of @src allocated via
16 //	:func:`__alloc_bytes()`.
17 void *xmemdup(const void *src, size_t len);
18 
19 ///
20 // duplicate a null-terminated string in a newly allocated buffer.
21 // @src: a pointer to string to be duplicated
22 // @return: a pointer to a copy of @str allocated via
23 //	:func:`__alloc_bytes()`.
24 char *xstrdup(const char *src);
25 
26 ///
27 // printf to allocated string
28 // @fmt: the format followed by its arguments.
29 // @return: the allocated & formatted string.
30 // This function is similar to asprintf() but the resulting string
31 // is allocated with __alloc_bytes().
32 char *xasprintf(const char *fmt, ...);
33 
34 ///
35 // vprintf to allocated string
36 // @fmt: the format
37 // @ap: the variadic arguments
38 // @return: the allocated & formatted string.
39 // This function is similar to asprintf() but the resulting string
40 // is allocated with __alloc_bytes().
41 char *xvasprintf(const char *fmt, va_list ap);
42 
43 #endif
44