[git] GPGME - branch, master, updated. gpgme-1.6.0-294-g24e6198

by Werner Koch cvs at cvs.gnupg.org
Mon Aug 22 17:02:53 CEST 2016


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GnuPG Made Easy".

The branch, master has been updated
       via  24e61984c9532924135c57b8ff98489a2d3bd4a3 (commit)
       via  c9e7dcb100d807583d8e312da459561138231376 (commit)
      from  3e60788810f93cfcd7f08e5882aff32ed7b6f831 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit 24e61984c9532924135c57b8ff98489a2d3bd4a3
Author: Werner Koch <wk at gnupg.org>
Date:   Mon Aug 22 16:57:51 2016 +0200

    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 <wk at gnupg.org>

diff --git a/doc/gpgme.texi b/doc/gpgme.texi
index e8a735a..b28c6ca 100644
--- a/doc/gpgme.texi
+++ b/doc/gpgme.texi
@@ -946,9 +946,34 @@ supported values for @var{what} are:
 @item homedir
 Return the default home directory.
 
+ at item sysconfdir
+Return the name of the system configuration directory
+
+ at item bindir
+Return the name of the directory with GnuPG program files.
+
+ at item libdir
+Return the name of the directory with GnuPG related library files.
+
+ at item libexecdir
+Return the name of the directory with GnuPG helper program files.
+
+ at item datadir
+Return the name of the directory with GnuPG shared data.
+
+ at item localedir
+Return the name of the directory with GnuPG locale data.
+
 @item agent-socket
 Return the name of the socket to connect to the gpg-agent.
 
+ at item agent-ssh-socket
+Return the name of the socket to connect to the ssh-agent component of
+gpg-agent.
+
+ at item dirmngr-socket
+Return the name of the socket to connect to the dirmngr.
+
 @item uiserver-socket
 Return the name of the socket to connect to the user interface server.
 
diff --git a/src/dirinfo.c b/src/dirinfo.c
index 226f93c..ecb1c0c 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;
 }
diff --git a/tests/t-engine-info.c b/tests/t-engine-info.c
index 53f5b2f..8f617f9 100644
--- a/tests/t-engine-info.c
+++ b/tests/t-engine-info.c
@@ -111,8 +111,20 @@ main (int argc, char **argv )
   gpgme_check_version (NULL);
 
   {
-    const char *keys[] = {"homedir", "agent-socket", "uiserver-socket",
-                          "gpgconf-name", "gpg-name", "gpgsm-name",
+    const char *keys[] = {"homedir",
+                          "sysconfdir",
+                          "bindir",
+                          "libexecdir",
+                          "libdir",
+                          "datadir",
+                          "localedir",
+                          "agent-socket",
+                          "agent-ssh-socket",
+                          "dirmngr-socket",
+                          "uiserver-socket",
+                          "gpgconf-name",
+                          "gpg-name",
+                          "gpgsm-name",
                           "g13-name", NULL };
     const char *s;
     int i;

commit c9e7dcb100d807583d8e312da459561138231376
Author: Werner Koch <wk at gnupg.org>
Date:   Mon Aug 22 16:32:14 2016 +0200

    core: Base gpgme_get_dirinfo(uiserver-socket) on the socket dir.
    
    * src/dirinfo.c (dirname_len): New.
    (parse_output): Change computation of UISRV_SOCKET.
    
    Signed-off-by: Werner Koch <wk at gnupg.org>

diff --git a/src/dirinfo.c b/src/dirinfo.c
index 8824c9a..226f93c 100644
--- a/src/dirinfo.c
+++ b/src/dirinfo.c
@@ -70,6 +70,15 @@ _gpgme_dirinfo_disable_gpgconf (void)
 }
 
 
+/* Return the length of the directory part including the trailing
+ * slash of NAME.  */
+static size_t
+dirname_len (const char *name)
+{
+  return _gpgme_get_basename (name) - name;
+}
+
+
 /* Parse the output of "gpgconf --list-dirs".  This function expects
    that DIRINFO_LOCK is held by the caller.  If COMPONENTS is set, the
    output of --list-components is expected. */
@@ -77,6 +86,7 @@ static void
 parse_output (char *line, int components)
 {
   char *value, *p;
+  size_t n;
 
   value = strchr (line, ':');
   if (!value)
@@ -110,22 +120,25 @@ parse_output (char *line, int components)
   else
     {
       if (!strcmp (line, "homedir") && !dirinfo.homedir)
+        dirinfo.homedir = strdup (value);
+      else if (!strcmp (line, "agent-socket") && !dirinfo.agent_socket)
         {
           const char name[] = "S.uiserver";
+          char *buffer;
 
-          dirinfo.homedir = strdup (value);
-          if (dirinfo.homedir)
+          dirinfo.agent_socket = strdup (value);
+          if (dirinfo.agent_socket)
             {
-              dirinfo.uisrv_socket = malloc (strlen (dirinfo
-                                                     .homedir)
-                                             + 1 + strlen (name) + 1);
-              if (dirinfo.uisrv_socket)
-                strcpy (stpcpy (stpcpy (dirinfo.uisrv_socket, dirinfo.homedir),
-                                DIRSEP_S), name);
+              n = dirname_len (dirinfo.agent_socket);
+              buffer = malloc (n + strlen (name) + 1);
+              if (buffer)
+                {
+                  strncpy (buffer, dirinfo.agent_socket, n);
+                  strcpy (buffer + n, name);
+                  dirinfo.uisrv_socket = buffer;
+                }
             }
         }
-      else if (!strcmp (line, "agent-socket") && !dirinfo.agent_socket)
-        dirinfo.agent_socket = strdup (value);
     }
 }
 

-----------------------------------------------------------------------

Summary of changes:
 doc/gpgme.texi        |  25 +++++++++++++
 src/dirinfo.c         | 101 +++++++++++++++++++++++++++++++++++++++++++-------
 tests/t-engine-info.c |  16 +++++++-
 3 files changed, 127 insertions(+), 15 deletions(-)


hooks/post-receive
-- 
GnuPG Made Easy
http://git.gnupg.org




More information about the Gnupg-commits mailing list