pkubat / rpms / pg_journal

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