diff -uNr pg_journal-0.2.0.old/src/pg_journal.c pg_journal-0.2.0.rm_fmt/src/pg_journal.c --- pg_journal-0.2.0.old/src/pg_journal.c 2013-05-17 17:19:06.000000000 +0000 +++ pg_journal-0.2.0.rm_fmt/src/pg_journal.c 2016-04-12 17:28:28.033445748 +0000 @@ -206,6 +206,15 @@ } static void +append_int(StringInfo str, struct iovec *field, const char *key, int value) +{ + char value_str[1024]; + + sprintf(value_str, "%d", value); + append_string(str, field, key, value_str); +} + +static void append_string3(StringInfo str, struct iovec *field, const char *key, const char *s1, const char *s2, const char *s3) { @@ -219,36 +228,7 @@ field->iov_len = str->len - old_len; } -static void -append_fmt(StringInfo str, struct iovec *field, const char *fmt, ...) -/* This extension allows gcc to check the format string */ -__attribute__((format(PG_PRINTF_ATTRIBUTE, 3, 4))); - -/* See backend/lib/stringinfo.c function appendStringInfo */ -static void -append_fmt(StringInfo str, struct iovec *field, const char *fmt, ...) -{ - size_t old_len = str->len; - va_list args; - bool success; - - /* appendStringInfoVA can fail due to insufficient space */ - while (1) { - va_start(args, fmt); - success = appendStringInfoVA(str, fmt, args); - va_end(args); - - if (success) - break; - - /* Double the buffer size and try again. */ - enlargeStringInfo(str, str->maxlen); - } - - field->iov_len = str->len - old_len; -} - -#define MAX_FIELDS 23 /* NB! Keep this in sync when adding fields! */ +#define MAX_FIELDS 25 /* NB! Keep this in sync when adding fields! */ static void journal_emit_log(ErrorData *edata) @@ -283,8 +263,8 @@ ": ", edata->message); - append_fmt(&buf, &fields[n++], "PRIORITY=%d", elevel_to_syslog(edata->elevel)); - append_fmt(&buf, &fields[n++], "PGLEVEL=%d", edata->elevel); + append_int(&buf, &fields[n++], "PRIORITY=", elevel_to_syslog(edata->elevel)); + append_int(&buf, &fields[n++], "PGLEVEL=", edata->elevel); if (edata->sqlerrcode) append_string(&buf, &fields[n++], "SQLSTATE=", @@ -329,7 +309,7 @@ if (edata->filename) append_string(&buf, &fields[n++], "CODE_FILE=", edata->filename); if (edata->lineno > 0) - append_fmt(&buf, &fields[n++], "CODE_LINE=%d", edata->lineno); + append_int(&buf, &fields[n++], "CODE_LINE=", edata->lineno); if (edata->funcname) append_string(&buf, &fields[n++], "CODE_FUNCTION=", edata->funcname); #endif /* SD_JOURNAL_SUPPRESS_LOCATION */