aboutsummaryrefslogtreecommitdiffstats
path: root/src/dirinfo.c
diff options
context:
space:
mode:
authorWerner Koch <[email protected]>2016-08-22 14:57:51 +0000
committerWerner Koch <[email protected]>2016-08-22 14:57:51 +0000
commit24e61984c9532924135c57b8ff98489a2d3bd4a3 (patch)
tree69fecf2bfd603953600a402947c09542f382fd74 /src/dirinfo.c
parentcore: Base gpgme_get_dirinfo(uiserver-socket) on the socket dir. (diff)
downloadgpgme-24e61984c9532924135c57b8ff98489a2d3bd4a3.tar.gz
gpgme-24e61984c9532924135c57b8ff98489a2d3bd4a3.zip
core: Add new items for gpgme_get_dirinfo.
* src/dirinfo.c (WANT_SYSCONFDIR, WANT_LIBEXECDIR, WANT_LIBDIR): New. (WANT_DATADIR, WANT_LCOALEDIR, WANT_AGENT_SSH_SOCKET): New (WANT_DIRMNGR_SOCKET): New. (dirinfo): Add fields 'sysconfdir', 'bindir', 'libexecdir', 'libdir', 'datadir', 'localedir', 'agent_ssh_socket', and 'dirmngr_socket'. (parse_output): Set these fields. (get_gpgconf_item): Return them. (gpgme_get_dirinfo): Likewise. Signed-off-by: Werner Koch <[email protected]>
Diffstat (limited to 'src/dirinfo.c')
-rw-r--r--src/dirinfo.c68
1 files changed, 65 insertions, 3 deletions
diff --git a/src/dirinfo.c b/src/dirinfo.c
index 226f93ca..ecb1c0ca 100644
--- a/src/dirinfo.c
+++ b/src/dirinfo.c
@@ -37,12 +37,20 @@ DEFINE_STATIC_LOCK (dirinfo_lock);
enum
{
WANT_HOMEDIR,
+ WANT_SYSCONFDIR,
+ WANT_BINDIR,
+ WANT_LIBEXECDIR,
+ WANT_LIBDIR,
+ WANT_DATADIR,
+ WANT_LOCALEDIR,
WANT_AGENT_SOCKET,
+ WANT_AGENT_SSH_SOCKET,
+ WANT_DIRMNGR_SOCKET,
+ WANT_UISRV_SOCKET,
WANT_GPGCONF_NAME,
WANT_GPG_NAME,
WANT_GPGSM_NAME,
WANT_G13_NAME,
- WANT_UISRV_SOCKET,
WANT_GPG_ONE_MODE
};
@@ -51,12 +59,20 @@ static struct {
int valid; /* Cached information is valid. */
int disable_gpgconf;
char *homedir;
+ char *sysconfdir;
+ char *bindir;
+ char *libexecdir;
+ char *libdir;
+ char *datadir;
+ char *localedir;
char *agent_socket;
+ char *agent_ssh_socket;
+ char *dirmngr_socket;
+ char *uisrv_socket;
char *gpgconf_name;
char *gpg_name;
char *gpgsm_name;
char *g13_name;
- char *uisrv_socket;
int gpg_one_mode; /* System is in gpg1 mode. */
} dirinfo;
@@ -121,6 +137,18 @@ parse_output (char *line, int components)
{
if (!strcmp (line, "homedir") && !dirinfo.homedir)
dirinfo.homedir = strdup (value);
+ else if (!strcmp (line, "sysconfdir") && !dirinfo.sysconfdir)
+ dirinfo.sysconfdir = strdup (value);
+ else if (!strcmp (line, "bindir") && !dirinfo.bindir)
+ dirinfo.bindir = strdup (value);
+ else if (!strcmp (line, "libexecdir") && !dirinfo.libexecdir)
+ dirinfo.libexecdir = strdup (value);
+ else if (!strcmp (line, "libdir") && !dirinfo.libdir)
+ dirinfo.libdir = strdup (value);
+ else if (!strcmp (line, "datadir") && !dirinfo.datadir)
+ dirinfo.datadir = strdup (value);
+ else if (!strcmp (line, "localedir") && !dirinfo.localedir)
+ dirinfo.localedir = strdup (value);
else if (!strcmp (line, "agent-socket") && !dirinfo.agent_socket)
{
const char name[] = "S.uiserver";
@@ -139,6 +167,10 @@ parse_output (char *line, int components)
}
}
}
+ else if (!strcmp (line, "dirmngr-socket") && !dirinfo.dirmngr_socket)
+ dirinfo.dirmngr_socket = strdup (value);
+ else if (!strcmp (line, "agent-ssh-socket") && !dirinfo.agent_ssh_socket)
+ dirinfo.agent_ssh_socket = strdup (value);
}
}
@@ -273,14 +305,28 @@ get_gpgconf_item (int what)
if (dirinfo.agent_socket)
_gpgme_debug (DEBUG_INIT, "gpgme-dinfo: agent='%s'\n",
dirinfo.agent_socket);
+ if (dirinfo.agent_ssh_socket)
+ _gpgme_debug (DEBUG_INIT, "gpgme-dinfo: ssh='%s'\n",
+ dirinfo.agent_ssh_socket);
+ if (dirinfo.dirmngr_socket)
+ _gpgme_debug (DEBUG_INIT, "gpgme-dinfo: dirmngr='%s'\n",
+ dirinfo.dirmngr_socket);
if (dirinfo.uisrv_socket)
_gpgme_debug (DEBUG_INIT, "gpgme-dinfo: uisrv='%s'\n",
dirinfo.uisrv_socket);
}
switch (what)
{
- case WANT_HOMEDIR: result = dirinfo.homedir; break;
+ case WANT_HOMEDIR: result = dirinfo.homedir; break;
+ case WANT_SYSCONFDIR: result = dirinfo.sysconfdir; break;
+ case WANT_BINDIR: result = dirinfo.bindir; break;
+ case WANT_LIBEXECDIR: result = dirinfo.libexecdir; break;
+ case WANT_LIBDIR: result = dirinfo.libdir; break;
+ case WANT_DATADIR: result = dirinfo.datadir; break;
+ case WANT_LOCALEDIR: result = dirinfo.localedir; break;
case WANT_AGENT_SOCKET: result = dirinfo.agent_socket; break;
+ case WANT_AGENT_SSH_SOCKET: result = dirinfo.agent_ssh_socket; break;
+ case WANT_DIRMNGR_SOCKET: result = dirinfo.dirmngr_socket; break;
case WANT_GPGCONF_NAME: result = dirinfo.gpgconf_name; break;
case WANT_GPG_NAME: result = dirinfo.gpg_name; break;
case WANT_GPGSM_NAME: result = dirinfo.gpgsm_name; break;
@@ -392,6 +438,22 @@ gpgme_get_dirinfo (const char *what)
return get_gpgconf_item (WANT_GPGSM_NAME);
else if (!strcmp (what, "g13-name"))
return get_gpgconf_item (WANT_G13_NAME);
+ else if (!strcmp (what, "agent-ssh-socket"))
+ return get_gpgconf_item (WANT_AGENT_SSH_SOCKET);
+ else if (!strcmp (what, "dirmngr-socket"))
+ return get_gpgconf_item (WANT_DIRMNGR_SOCKET);
+ else if (!strcmp (what, "sysconfdir"))
+ return get_gpgconf_item (WANT_SYSCONFDIR);
+ else if (!strcmp (what, "bindir"))
+ return get_gpgconf_item (WANT_BINDIR);
+ else if (!strcmp (what, "libexecdir"))
+ return get_gpgconf_item (WANT_LIBEXECDIR);
+ else if (!strcmp (what, "libdir"))
+ return get_gpgconf_item (WANT_LIBDIR);
+ else if (!strcmp (what, "datadir"))
+ return get_gpgconf_item (WANT_DATADIR);
+ else if (!strcmp (what, "localedir"))
+ return get_gpgconf_item (WANT_LOCALEDIR);
else
return NULL;
}