diff options
author | Daniel Lange <DLange@git.local> | 2021-09-21 08:35:19 +0200 |
---|---|---|
committer | Daniel Lange <DLange@git.local> | 2021-09-21 08:35:19 +0200 |
commit | 69f439eff387a6ecb52734e400b297a3c85f2285 (patch) | |
tree | 2a988b7868b749654796183ba70b4272965da1bf /XUtils.h | |
parent | c55320e9e2a8916e911bcd39ab37b79e3a7d03b2 (diff) | |
download | debian_htop-69f439eff387a6ecb52734e400b297a3c85f2285.tar.gz debian_htop-69f439eff387a6ecb52734e400b297a3c85f2285.tar.bz2 debian_htop-69f439eff387a6ecb52734e400b297a3c85f2285.zip |
New upstream version 3.1.0upstream/3.1.0
Diffstat (limited to 'XUtils.h')
-rw-r--r-- | XUtils.h | 33 |
1 files changed, 18 insertions, 15 deletions
@@ -13,7 +13,6 @@ in the source distribution for its full text. #include <stdio.h> #include <stdlib.h> // IWYU pragma: keep #include <string.h> // IWYU pragma: keep -#include <sys/types.h> #include "Compat.h" #include "Macros.h" @@ -21,15 +20,17 @@ in the source distribution for its full text. void fail(void) ATTR_NORETURN; -void* xMalloc(size_t size); +void* xMalloc(size_t size) ATTR_ALLOC_SIZE1(1) ATTR_MALLOC; -void* xMallocArray(size_t nmemb, size_t size); +void* xMallocArray(size_t nmemb, size_t size) ATTR_ALLOC_SIZE2(1, 2) ATTR_MALLOC; -void* xCalloc(size_t nmemb, size_t size); +void* xCalloc(size_t nmemb, size_t size) ATTR_ALLOC_SIZE2(1, 2) ATTR_MALLOC; -void* xRealloc(void* ptr, size_t size); +void* xRealloc(void* ptr, size_t size) ATTR_ALLOC_SIZE1(2); -void* xReallocArray(void* ptr, size_t nmemb, size_t size); +void* xReallocArray(void* ptr, size_t nmemb, size_t size) ATTR_ALLOC_SIZE2(2, 3); + +void* xReallocArrayZero(void* ptr, size_t prevmemb, size_t newmemb, size_t size) ATTR_ALLOC_SIZE2(3, 4); /* * String_startsWith gives better performance if strlen(match) can be computed @@ -39,25 +40,26 @@ static inline bool String_startsWith(const char* s, const char* match) { return strncmp(s, match, strlen(match)) == 0; } -static inline bool String_contains_i(const char* s1, const char* s2) { - return strcasestr(s1, s2) != NULL; -} +bool String_contains_i(const char* s1, const char* s2); static inline bool String_eq(const char* s1, const char* s2) { return strcmp(s1, s2) == 0; } -char* String_cat(const char* s1, const char* s2); +char* String_cat(const char* s1, const char* s2) ATTR_MALLOC; -char* String_trim(const char* in); +char* String_trim(const char* in) ATTR_MALLOC; char** String_split(const char* s, char sep, size_t* n); void String_freeArray(char** s); -char* String_getToken(const char* line, unsigned short int numMatch); +char* String_getToken(const char* line, unsigned short int numMatch) ATTR_MALLOC; + +char* String_readLine(FILE* fd) ATTR_MALLOC; -char* String_readLine(FILE* fd); +/* Always null-terminates dest. Caller must pass a strictly positive size. */ +size_t String_safeStrncpy(char* restrict dest, const char* restrict src, size_t size); ATTR_FORMAT(printf, 2, 3) int xAsprintf(char** strp, const char* fmt, ...); @@ -65,9 +67,10 @@ int xAsprintf(char** strp, const char* fmt, ...); ATTR_FORMAT(printf, 3, 4) int xSnprintf(char* buf, size_t len, const char* fmt, ...); -char* xStrdup(const char* str) ATTR_NONNULL; +char* xStrdup(const char* str) ATTR_NONNULL ATTR_MALLOC; +void free_and_xStrdup(char** ptr, const char* str); -char* xStrndup(const char* str, size_t len) ATTR_NONNULL; +char* xStrndup(const char* str, size_t len) ATTR_NONNULL ATTR_MALLOC; ssize_t xReadfile(const char* pathname, void* buffer, size_t count); ssize_t xReadfileat(openat_arg_t dirfd, const char* pathname, void* buffer, size_t count); |