#define min(a, b) ((a) < (b) ? (a) : (b))
#endif
+#ifndef min_t
+#define min_t(type, a, b) ((type) min(a, b))
+#endif
+
#ifndef LTTNG_PACKED
#define LTTNG_PACKED __attribute__((__packed__))
#endif
+/*
+ * Align value to the next multiple of align. Returns val if it already is a
+ * multiple of align. Align must be a power of two.
+ */
+#define ALIGN_TO(value, align) ((value + (align - 1)) & ~(align - 1))
+
/*
* LTTNG_HIDDEN: set the hidden attribute for internal functions
* On Windows, symbols are local unless explicitly exported,
static inline
int lttng_strncpy(char *dst, const char *src, size_t dst_len)
{
- if (lttng_strnlen(src, dst_len) == dst_len) {
+ if (lttng_strnlen(src, dst_len) >= dst_len) {
/* Fail since copying would result in truncation. */
return -1;
}
- strncpy(dst, src, dst_len);
- /*
- * Be extra careful and put final \0 at the end after strncpy(),
- * even though we checked the length before. This makes Coverity
- * happy.
- */
- dst[dst_len - 1] = '\0';
+ strcpy(dst, src);
return 0;
}