[git] GnuPG - branch, master, updated. gnupg-2.1.13-127-g7732b33

by Werner Koch cvs at cvs.gnupg.org
Mon Jul 11 13:10:16 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 "The GNU Privacy Guard".

The branch, master has been updated
       via  7732b332886792b2bbf47ecf7430e953f1c55a2c (commit)
      from  e32c575e0f3704e7563048eea6d26844bdfc494b (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 7732b332886792b2bbf47ecf7430e953f1c55a2c
Author: Werner Koch <wk at gnupg.org>
Date:   Mon Jul 11 13:05:37 2016 +0200

    gpgconf: Enhance --list-dirs.
    
    * tools/gpgconf.c (main) <aListDir>: Factor code out to ...
    (list_dirs): new.  Rewrite to use a table.  Allow selection of a
    items.  Add "agent-ssh-socket".
    --
    
    This change makes the use of gpgconf in scripts easier.  For example,
    to set the envvar with the name of the socket used by ssh, it is now
    possible to do this:
    
      SSH_AUTH_SOCK="$(gpgconf --list-dirs agent-ssh-socket)"
    
    which guarantees that the right name is used.
    
    Signed-off-by: Werner Koch <wk at gnupg.org>

diff --git a/doc/gpg-agent.texi b/doc/gpg-agent.texi
index 37774dd..cd5d751 100644
--- a/doc/gpg-agent.texi
+++ b/doc/gpg-agent.texi
@@ -815,7 +815,7 @@ it by adding this to your init script:
 @example
 unset SSH_AGENT_PID
 if [ "$@{gnupg_SSH_AUTH_SOCK_by:-0@}" -ne $$ ]; then
-  export SSH_AUTH_SOCK="$@{HOME@}/.gnupg/S.gpg-agent.ssh"
+  export SSH_AUTH_SOCK="$(gpgconf --list-dirs agent-ssh-socket)"
 fi
 @end example
 @end cartouche
diff --git a/doc/tools.texi b/doc/tools.texi
index 8fdaa96..577df8e 100644
--- a/doc/tools.texi
+++ b/doc/tools.texi
@@ -280,7 +280,7 @@ Check the options for the component @var{component}.
 Update all configuration files with values taken from the global
 configuration file (usually @file{/etc/gnupg/gpgconf.conf}).
 
- at item --list-dirs
+ at item --list-dirs [@var{names}]
 Lists the directories used by @command{gpgconf}.  One directory is
 listed per line, and each line consists of a colon-separated list where
 the first field names the directory type (for example @code{sysconfdir})
@@ -288,7 +288,9 @@ and the second field contains the percent-escaped directory.  Although
 they are not directories, the socket file names used by
 @command{gpg-agent} and @command{dirmngr} are printed as well.  Note
 that the socket file names and the @code{homedir} lines are the default
-names and they may be overridden by command line switches.
+names and they may be overridden by command line switches.  If
+ at var{names} are given only the directories or file names specified by
+the list names are printed without any escaping.
 
 @item --list-config [@var{filename}]
 List the global configuration file in a colon separated format.  If
diff --git a/tools/gpgconf.c b/tools/gpgconf.c
index 2b177e2..ad61511 100644
--- a/tools/gpgconf.c
+++ b/tools/gpgconf.c
@@ -147,6 +147,64 @@ get_outfp (estream_t *fp)
 }
 
 
+static void
+list_dirs (estream_t fp, char **names)
+{
+  static struct {
+    const char *name;
+    const char *(*fnc)(void);
+    const char *extra;
+    int special;
+  } list[] = {
+    { "sysconfdir",         gnupg_sysconfdir, NULL },
+    { "bindir",             gnupg_bindir,     NULL },
+    { "libexecdir",         gnupg_libexecdir, NULL },
+    { "libdir",             gnupg_libdir,     NULL },
+    { "datadir",            gnupg_datadir,    NULL },
+    { "localedir",          gnupg_localedir,  NULL },
+    { "dirmngr-socket",     dirmngr_user_socket_name, NULL, 1 },
+    { "dirmngr-socket",     dirmngr_sys_socket_name,  NULL, 2 },
+    { "dirmngr-sys-socket", dirmngr_sys_socket_name,  NULL, 1 },
+    { "agent-ssh-socket",   gnupg_socketdir,  GPG_AGENT_SSH_SOCK_NAME },
+    { "agent-socket",       gnupg_socketdir,  GPG_AGENT_SOCK_NAME },
+    { "homedir",            gnupg_homedir,    NULL }
+  };
+  int idx, j;
+  char *tmp;
+  const char *s;
+
+
+  for (idx = 0; idx < DIM (list); idx++)
+    {
+      if (list[idx].special == 1 && dirmngr_user_socket_name ())
+        ;
+      else if (list[idx].special == 2 && !dirmngr_user_socket_name ())
+        ;
+      else if (list[idx].special == 1 || list[idx].special == 2)
+        continue;
+
+      s = list[idx].fnc ();
+      if (list[idx].extra)
+        {
+          tmp = make_filename (s, list[idx].extra, NULL);
+          s = tmp;
+        }
+      else
+        tmp = NULL;
+      if (!names)
+        es_fprintf (fp, "%s:%s\n", list[idx].name, gc_percent_escape (s));
+      else
+        {
+          for (j=0; names[j]; j++)
+            if (!strcmp (names[j], list[idx].name))
+              es_fprintf (fp, "%s\n", s);
+        }
+
+      xfree (tmp);
+    }
+}
+
+
 /* gpgconf main. */
 int
 main (int argc, char **argv)
@@ -357,43 +415,7 @@ main (int argc, char **argv)
     case aListDirs:
       /* Show the system configuration directories for gpgconf.  */
       get_outfp (&outfp);
-      es_fprintf (outfp, "sysconfdir:%s\n",
-                  gc_percent_escape (gnupg_sysconfdir ()));
-      es_fprintf (outfp, "bindir:%s\n",
-                  gc_percent_escape (gnupg_bindir ()));
-      es_fprintf (outfp, "libexecdir:%s\n",
-                  gc_percent_escape (gnupg_libexecdir ()));
-      es_fprintf (outfp, "libdir:%s\n",
-                  gc_percent_escape (gnupg_libdir ()));
-      es_fprintf (outfp, "datadir:%s\n",
-                  gc_percent_escape (gnupg_datadir ()));
-      es_fprintf (outfp, "localedir:%s\n",
-                  gc_percent_escape (gnupg_localedir ()));
-
-      if (dirmngr_user_socket_name ())
-        {
-          es_fprintf (outfp, "dirmngr-socket:%s\n",
-                      gc_percent_escape (dirmngr_user_socket_name ()));
-          es_fprintf (outfp, "dirmngr-sys-socket:%s\n",
-                      gc_percent_escape (dirmngr_sys_socket_name ()));
-        }
-      else
-        {
-          es_fprintf (outfp, "dirmngr-socket:%s\n",
-                      gc_percent_escape (dirmngr_sys_socket_name ()));
-        }
-
-      {
-        char *tmp = make_filename (gnupg_socketdir (),
-                                   GPG_AGENT_SOCK_NAME, NULL);
-        es_fprintf (outfp, "agent-socket:%s\n", gc_percent_escape (tmp));
-        xfree (tmp);
-      }
-      {
-        char *tmp = xstrdup (gnupg_homedir ());
-        es_fprintf (outfp, "homedir:%s\n", gc_percent_escape (tmp));
-        xfree (tmp);
-      }
+      list_dirs (outfp, argc? argv : NULL);
       break;
 
     case aCreateSocketDir:

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

Summary of changes:
 doc/gpg-agent.texi |  2 +-
 doc/tools.texi     |  6 ++--
 tools/gpgconf.c    | 96 +++++++++++++++++++++++++++++++++---------------------
 3 files changed, 64 insertions(+), 40 deletions(-)


hooks/post-receive
-- 
The GNU Privacy Guard
http://git.gnupg.org




More information about the Gnupg-commits mailing list