MALLOC_SIZEOF_SAFE(x)/sizeof((x)[0]), \
VOID_0))
-/* These are like strdupa()/strndupa(), but honour ALLOCA_MAX */
-#define strdupa_safe(s) \
- ({ \
- const char *_t = (s); \
- (char*) memdupa_suffix0(_t, strlen(_t)); \
- })
-
-#define strndupa_safe(s, n) \
- ({ \
- const char *_t = (s); \
- (char*) memdupa_suffix0(_t, strnlen(_t, n)); \
- })
-
/* Free every element of the array. */
static inline void free_many(void **p, size_t n) {
assert(p || n == 0);
char* strdupspn(const char *a, const char *accept);
char* strdupcspn(const char *a, const char *reject);
+/* These are like strdupa()/strndupa(), but honour ALLOCA_MAX */
+#define strdupa_safe(s) \
+ ({ \
+ const char *_t = (s); \
+ (char*) memdupa_suffix0(_t, strlen(_t)); \
+ })
+
+#define strndupa_safe(s, n) \
+ ({ \
+ const char *_t = (s); \
+ (char*) memdupa_suffix0(_t, strnlen(_t, n)); \
+ })
+
char* find_line_startswith(const char *haystack, const char *needle);
bool version_is_valid(const char *s);