From 5b6d08cd2992922b667564a49f19580f11676050 Mon Sep 17 00:00:00 2001 From: Peter Eisentraut Date: Sun, 13 Oct 2013 00:09:18 -0400 Subject: Add use of asprintf() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add asprintf(), pg_asprintf(), and psprintf() to simplify string allocation and composition. Replacement implementations taken from NetBSD. Reviewed-by: Álvaro Herrera Reviewed-by: Asif Naeem --- src/backend/utils/adt/dbsize.c | 28 ++++++---------------------- 1 file changed, 6 insertions(+), 22 deletions(-) (limited to 'src/backend/utils/adt/dbsize.c') diff --git a/src/backend/utils/adt/dbsize.c b/src/backend/utils/adt/dbsize.c index 868474680df..08ea4570017 100644 --- a/src/backend/utils/adt/dbsize.c +++ b/src/backend/utils/adt/dbsize.c @@ -627,18 +627,14 @@ pg_size_pretty_numeric(PG_FUNCTION_ARGS) Numeric size = PG_GETARG_NUMERIC(0); Numeric limit, limit2; - char *buf, - *result; + char *result; limit = int64_to_numeric(10 * 1024); limit2 = int64_to_numeric(10 * 1024 * 2 - 1); if (numeric_is_less(size, limit)) { - buf = numeric_to_cstring(size); - result = palloc(strlen(buf) + 7); - strcpy(result, buf); - strcat(result, " bytes"); + result = psprintf("%s bytes", numeric_to_cstring(size)); } else { @@ -650,10 +646,7 @@ pg_size_pretty_numeric(PG_FUNCTION_ARGS) { /* size = (size + 1) / 2 */ size = numeric_plus_one_over_two(size); - buf = numeric_to_cstring(size); - result = palloc(strlen(buf) + 4); - strcpy(result, buf); - strcat(result, " kB"); + result = psprintf("%s kB", numeric_to_cstring(size)); } else { @@ -663,10 +656,7 @@ pg_size_pretty_numeric(PG_FUNCTION_ARGS) { /* size = (size + 1) / 2 */ size = numeric_plus_one_over_two(size); - buf = numeric_to_cstring(size); - result = palloc(strlen(buf) + 4); - strcpy(result, buf); - strcat(result, " MB"); + result = psprintf("%s MB", numeric_to_cstring(size)); } else { @@ -677,10 +667,7 @@ pg_size_pretty_numeric(PG_FUNCTION_ARGS) { /* size = (size + 1) / 2 */ size = numeric_plus_one_over_two(size); - buf = numeric_to_cstring(size); - result = palloc(strlen(buf) + 4); - strcpy(result, buf); - strcat(result, " GB"); + result = psprintf("%s GB", numeric_to_cstring(size)); } else { @@ -688,10 +675,7 @@ pg_size_pretty_numeric(PG_FUNCTION_ARGS) size = numeric_shift_right(size, 10); /* size = (size + 1) / 2 */ size = numeric_plus_one_over_two(size); - buf = numeric_to_cstring(size); - result = palloc(strlen(buf) + 4); - strcpy(result, buf); - strcat(result, " TB"); + result = psprintf("%s TB", numeric_to_cstring(size)); } } } -- cgit v1.2.3