summaryrefslogtreecommitdiff
path: root/src/visibility.c
diff options
context:
space:
mode:
authorWerner Koch <wk@gnupg.org>2020-02-18 08:53:30 +0100
committerWerner Koch <wk@gnupg.org>2020-02-18 08:56:33 +0100
commit5742b8eaf3fa9cda3dfb6b3ad0fea7485fff1a12 (patch)
tree7bb1347295569e10184f65ccfb3aea8e44495275 /src/visibility.c
parenta6ab8e3a710b899ecfb2ff518725314a1e0e64ff (diff)
downloadlibgpg-error-5742b8eaf3fa9cda3dfb6b3ad0fea7485fff1a12.tar.gz
core: Add gpgrt_fnameconcat and gpgrt_absfnameconcat.
* src/gpg-error.h.in (gpgrt_fnameconcat): New. (gpgrt_absfnameconcat): New. * src/visibility.c (gpgrt_fnameconcat, gpgrt_absfnameconcat): New. * src/stringutils.c: New file. (_gpgrt_vfnameconcat): New. (_gpgrt_fnameconcat, _gpgrt_absfnameconcat): New. * src/gpg-error.def.in: Add new functions. * src/gpg-error.vers: Ditto. * src/sysutils.c: Include pwd.h. (_gpgrt_getpwdir): New. * configure.ac: Test for pwd.h, getpwnam, getpwuid, and their _r variants. * src/Makefile.am (libgpg_error_la_SOURCES): Add new file. * tests/t-stringutils.c: New. * tests/t-common.h (xmalloc, xstrdup, xfree): New. (die): Kludge to avoid compiler warnings. -- The new functions are based on the code of make_filename from GnuPG. They have been written by me ages ago with only minor modifications by David Shaw. I re-license them from LGPL-3.0+ OR GPL-2.0+ to LGPL-2.1-or-later. Signed-off-by: Werner Koch <wk@gnupg.org>
Diffstat (limited to 'src/visibility.c')
-rw-r--r--src/visibility.c27
1 files changed, 27 insertions, 0 deletions
diff --git a/src/visibility.c b/src/visibility.c
index d754032..5f88aad 100644
--- a/src/visibility.c
+++ b/src/visibility.c
@@ -1180,6 +1180,33 @@ gpgrt_cmp_version (const char *a, const char *b, int level)
+/* String utilities. */
+char *
+gpgrt_fnameconcat (const char *first, ... )
+{
+ va_list arg_ptr;
+ char *result;
+
+ va_start (arg_ptr, first);
+ result = _gpgrt_vfnameconcat (0, first, arg_ptr);
+ va_end (arg_ptr);
+ return result;
+}
+
+char *
+gpgrt_absfnameconcat (const char *first, ... )
+{
+ va_list arg_ptr;
+ char *result;
+
+ va_start (arg_ptr, first);
+ result = _gpgrt_vfnameconcat (1, first, arg_ptr);
+ va_end (arg_ptr);
+ return result;
+}
+
+
+
/* For consistency reasons we use function wrappers also for Windows
* specific function despite that they are technically not needed. */
#ifdef HAVE_W32_SYSTEM