Przeglądaj źródła

Add support of width modifier for strings in printf

tags/1.1.0
Vsevolod Stakhov 8 lat temu
rodzic
commit
fe8a77e7d1
1 zmienionych plików z 24 dodań i 3 usunięć
  1. 24
    3
      src/libutil/printf.c

+ 24
- 3
src/libutil/printf.c Wyświetl plik

@@ -482,8 +482,14 @@ rspamd_vprintf_common (rspamd_printf_append_func func,

case 'V':
v = va_arg (args, rspamd_fstring_t *);
slen = v->len;

if (G_UNLIKELY (width != 0)) {
slen = MIN (v->len, width);
}

if (v) {
RSPAMD_PRINTF_APPEND (v->str, v->len);
RSPAMD_PRINTF_APPEND (v->str, slen);
}
else {
RSPAMD_PRINTF_APPEND ("(NULL)", 6);
@@ -493,8 +499,14 @@ rspamd_vprintf_common (rspamd_printf_append_func func,

case 'T':
tok = va_arg (args, rspamd_ftok_t *);
slen = tok->len;

if (G_UNLIKELY (width != 0)) {
slen = MIN (tok->len, width);
}

if (tok) {
RSPAMD_PRINTF_APPEND (tok->begin, tok->len);
RSPAMD_PRINTF_APPEND (tok->begin, slen);
}
else {
RSPAMD_PRINTF_APPEND ("(NULL)", 6);
@@ -503,8 +515,13 @@ rspamd_vprintf_common (rspamd_printf_append_func func,

case 'v':
gs = va_arg (args, GString *);
slen = gs->len;

if (G_UNLIKELY (width != 0)) {
slen = MIN (gs->len, width);
}
if (gs) {
RSPAMD_PRINTF_APPEND (gs->str, gs->len);
RSPAMD_PRINTF_APPEND (gs->str, slen);
}
else {
RSPAMD_PRINTF_APPEND ("(NULL)", 6);
@@ -542,6 +559,10 @@ rspamd_vprintf_common (rspamd_printf_append_func func,
slen = strlen (p);
}

if (G_UNLIKELY (width != 0)) {
slen = MIN (slen, width);
}

if (G_LIKELY(hex == 0)) {
RSPAMD_PRINTF_APPEND (p, slen);
}

Ładowanie…
Anuluj
Zapisz