Procházet zdrojové kódy

[Minor] Tune printf for hex and base32 input strings

tags/1.4.0
Vsevolod Stakhov před 7 roky
rodič
revize
afb5308643
1 změnil soubory, kde provedl 33 přidání a 10 odebrání
  1. 33
    10
      src/libutil/printf.c

+ 33
- 10
src/libutil/printf.c Zobrazit soubor

@@ -579,28 +579,42 @@ rspamd_vprintf_common (rspamd_printf_append_func func,
p = "(NULL)";
}

if (slen == -1) {
/* NULL terminated string */
slen = strlen (p);
}

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

if (G_UNLIKELY (b32)) {
gchar *b32buf;

if (G_UNLIKELY (slen == -1)) {
if (G_LIKELY (width != 0)) {
slen = width;
}
else {
/* NULL terminated string */
slen = strlen (p);
}
}

b32buf = rspamd_encode_base32 (p, slen);

if (b32buf) {
RSPAMD_PRINTF_APPEND (b32buf, strlen (b32buf));
g_free (b32buf);
}
else {
RSPAMD_PRINTF_APPEND ("(NULL)", sizeof ("(NULL)") - 1);
}
}
else if (G_UNLIKELY (hex)) {
gchar hexbuf[2];

if (G_UNLIKELY (slen == -1)) {
if (G_LIKELY (width != 0)) {
slen = width;
}
else {
/* NULL terminated string */
slen = strlen (p);
}
}

while (slen) {
hexbuf[0] = hex == 2 ? _HEX[(*p >> 4) & 0xf] :
_hex[(*p >> 4) & 0xf];
@@ -609,15 +623,24 @@ rspamd_vprintf_common (rspamd_printf_append_func func,
p++;
slen--;
}

fmt++;
buf_start = fmt;

}
else {
if (slen == -1) {
/* NULL terminated string */
slen = strlen (p);
}

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

RSPAMD_PRINTF_APPEND (p, slen);
}


continue;

case 'O':

Načítá se…
Zrušit
Uložit