diff options
author | Peter Eisentraut <peter_e@gmx.net> | 2013-10-13 00:09:18 -0400 |
---|---|---|
committer | Peter Eisentraut <peter_e@gmx.net> | 2013-10-13 00:09:18 -0400 |
commit | 5b6d08cd2992922b667564a49f19580f11676050 (patch) | |
tree | 4104a4255eeb88e78da71477b5f7b129f9a1b599 /src/common/fe_memutils.c | |
parent | a53dee43fe585e673658b01e7354892dcede957e (diff) |
Add use of asprintf()
Add asprintf(), pg_asprintf(), and psprintf() to simplify string
allocation and composition. Replacement implementations taken from
NetBSD.
Reviewed-by: Álvaro Herrera <alvherre@2ndquadrant.com>
Reviewed-by: Asif Naeem <anaeem.it@gmail.com>
Diffstat (limited to 'src/common/fe_memutils.c')
-rw-r--r-- | src/common/fe_memutils.c | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/src/common/fe_memutils.c b/src/common/fe_memutils.c index bfe79f8e437..7b96a4b6ba7 100644 --- a/src/common/fe_memutils.c +++ b/src/common/fe_memutils.c @@ -93,6 +93,25 @@ pg_free(void *ptr) free(ptr); } +int +pg_asprintf(char **ret, const char *format, ...) +{ + va_list ap; + int rc; + + va_start(ap, format); + rc = vasprintf(ret, format, ap); + va_end(ap); + + if (rc < 0) + { + fprintf(stderr, _("out of memory\n")); + exit(EXIT_FAILURE); + } + + return rc; +} + /* * Frontend emulation of backend memory management functions. Useful for * programs that compile backend files. @@ -126,3 +145,23 @@ repalloc(void *pointer, Size size) { return pg_realloc(pointer, size); } + +char * +psprintf(const char *format, ...) +{ + va_list ap; + int rc; + char *ret; + + va_start(ap, format); + rc = vasprintf(&ret, format, ap); + va_end(ap); + + if (rc < 0) + { + fprintf(stderr, _("out of memory\n")); + exit(EXIT_FAILURE); + } + + return ret; +} |