MT#55283 add snprintf wrapper

This returns the length of the resulting string regardless of whether it
was truncated or not

Change-Id: I72f8b6194483e60705dee5dd3b9b9a69611325e8
pull/2149/head
Richard Fuchs 1 week ago
parent c8d014c1f6
commit 793fdf71d0

@ -2421,14 +2421,14 @@ err:
}
#define JSON_ADD_LIST_STRING(f,...) do { \
int len = snprintf(tmp,sizeof(tmp), f, __VA_ARGS__); \
size_t len = rtpe_snprintf(tmp,sizeof(tmp), f, __VA_ARGS__); \
char enc[len * 3 + 1]; \
str encstr = parser->escape(enc, tmp, len); \
parser->list_add_str_dup(inner, &encstr); \
} while (0)
#define JSON_SET_NSTRING(a,b,c,...) do { \
char tmp1[128]; \
int len = snprintf(tmp1, sizeof(tmp1), c, __VA_ARGS__); \
size_t len = rtpe_snprintf(tmp1, sizeof(tmp1), c, __VA_ARGS__); \
char enc[len * 3 + 1]; \
str encstr = parser->escape(enc, tmp1, len); \
char tmp2[256]; \
@ -2445,7 +2445,7 @@ err:
} while (0)
#define JSON_SET_SIMPLE(a,c,...) do { \
char tbuf[128]; \
int len = snprintf(tbuf, sizeof(tbuf), c, __VA_ARGS__); \
size_t len = rtpe_snprintf(tbuf, sizeof(tbuf), c, __VA_ARGS__); \
char enc[len * 3 + 1]; \
str encstr = parser->escape(enc, tbuf, len); \
parser->dict_add_str_dup(inner, a, &encstr); \

@ -314,8 +314,7 @@ static void output_finish_src(struct msghdr *mh) {
}
static void software(struct msghdr *mh, struct software *sw) {
int i;
i = snprintf(sw->str, sizeof(sw->str), "%s", rtpe_config.software_id);
size_t i = rtpe_snprintf(sw->str, sizeof(sw->str), "%s", rtpe_config.software_id);
output_add_data_len_pad(mh, sw, STUN_SOFTWARE, sw->str, i);
}

@ -154,6 +154,11 @@ INLINE void add_c_str_to_ht(const char *key, char *value, charp_ht ht) {
t_hash_table_insert(ht, g_strdup(key), value); // hash table takes ownership of both
}
#define rtpe_snprintf(o, l, f, ...) ({ \
ssize_t __r = snprintf(o, l, f, ##__VA_ARGS__); \
__r >= 0 ? MIN((l) - 1, __r) : (l) - 1; \
})
/*** MUTEX ABSTRACTION ***/
typedef pthread_mutex_t mutex_t;

@ -30,11 +30,11 @@ void __ilog(int prio, const char *fmt, ...) {
char *endp = prefix + sizeof(prefix);
if (log_info_call)
pp += snprintf(pp, endp - pp, "[C %s%s%s] ", FMT_M(log_info_call));
pp += rtpe_snprintf(pp, endp - pp, "[C %s%s%s] ", FMT_M(log_info_call));
if (log_info_stream)
pp += snprintf(pp, endp - pp, "[S %s%s%s] ", FMT_M(log_info_stream));
pp += rtpe_snprintf(pp, endp - pp, "[S %s%s%s] ", FMT_M(log_info_stream));
if (log_info_ssrc)
pp += snprintf(pp, endp - pp, "[%s0x%lx%s] ", FMT_M(log_info_ssrc));
pp += rtpe_snprintf(pp, endp - pp, "[%s0x%lx%s] ", FMT_M(log_info_ssrc));
va_start(ap, fmt);
__vpilog(prio, prefix, fmt, ap);

Loading…
Cancel
Save