aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorWerner Koch <[email protected]>2025-12-09 12:06:35 +0100
committerWerner Koch <[email protected]>2025-12-09 12:12:30 +0100
commit6fe7cf710254d78ada27fbf63747ab0e97bc6979 (patch)
treef851a0f20db33c6314582eb0f925cb5128d2c73e /src
parentNew function gpgrt_fconcat. (diff)
downloadlibgpg-error-6fe7cf710254d78ada27fbf63747ab0e97bc6979.tar.gz
libgpg-error-6fe7cf710254d78ada27fbf63747ab0e97bc6979.zip
argparse: gpgrt_fconcat to get the SYSCONFDIR.
* src/stringutils.c (_gpgrt_fconcat): New internal function. * src/argparse.c (_gpgrt_argparser): Use it. -- This fixes the conf files default also for Windows. Updates-commmit: a9fc729253eec88f56d810bd2a8edd327267c5b4 GnuPG-bug-id: 7894
Diffstat (limited to 'src')
-rw-r--r--src/argparse.c8
-rw-r--r--src/gpgrt-int.h2
-rw-r--r--src/stringutils.c13
3 files changed, 21 insertions, 2 deletions
diff --git a/src/argparse.c b/src/argparse.c
index c669a3f..9868fa7 100644
--- a/src/argparse.c
+++ b/src/argparse.c
@@ -2380,8 +2380,12 @@ _gpgrt_argparser (gpgrt_argparse_t *arg, gpgrt_opt_t *opts,
else
s = confname;
xfree (arg->internal->confname);
- arg->internal->confname = _gpgrt_fnameconcat
- (confdir.sys? confdir.sys : SYSCONFDIR, s, NULL);
+ if (confdir.sys)
+ arg->internal->confname = _gpgrt_fconcat (GPGRT_FCONCAT_TILDE,
+ confdir.sys, s, NULL);
+ else
+ arg->internal->confname = _gpgrt_fconcat (GPGRT_FCONCAT_SYSCONF,
+ s, NULL);
_gpgrt_free (tmpname);
if (!arg->internal->confname)
return (arg->r_opt = ARGPARSE_OUT_OF_CORE);
diff --git a/src/gpgrt-int.h b/src/gpgrt-int.h
index b805eed..f67eec7 100644
--- a/src/gpgrt-int.h
+++ b/src/gpgrt-int.h
@@ -842,6 +842,8 @@ char *_gpgrt_getusername (void);
/* Expand and concat file name parts. */
char *_gpgrt_vfnameconcat (unsigned int flags, const char *first_part,
va_list arg_ptr);
+char *_gpgrt_fconcat (unsigned int flags, const char *first_part,
+ ... ) GPGRT_ATTR_SENTINEL(0);
char *_gpgrt_fnameconcat (const char *first_part,
... ) GPGRT_ATTR_SENTINEL(0);
char *_gpgrt_absfnameconcat (const char *first_part,
diff --git a/src/stringutils.c b/src/stringutils.c
index f153be1..1d3b920 100644
--- a/src/stringutils.c
+++ b/src/stringutils.c
@@ -278,6 +278,19 @@ _gpgrt_vfnameconcat (unsigned int flags,
}
+char *
+_gpgrt_fconcat (unsigned int flags, const char *first_part, ... )
+{
+ va_list arg_ptr;
+ char *result;
+
+ va_start (arg_ptr, first_part);
+ result = _gpgrt_vfnameconcat (flags, first_part, arg_ptr);
+ va_end (arg_ptr);
+ return result;
+}
+
+
/* Construct a filename from the NULL terminated list of parts. Tilde
* expansion is done for the first argument. The caller must release
* the result using gpgrt_free; on error ERRNO is set and NULL