Extend --list-dirs to print the bindir.
[gnupg.git] / tools / gpgconf.c
index 9c1c77a..9054e29 100644 (file)
@@ -43,9 +43,11 @@ enum cmd_and_opt_values
     aCheckPrograms,
     aListOptions,
     aChangeOptions,
+    aCheckOptions,
     aApplyDefaults,
     aListConfig,
-    aCheckConfig
+    aCheckConfig,
+    aListDirs
 
   };
 
@@ -59,8 +61,11 @@ static ARGPARSE_OPTS opts[] =
     { aCheckPrograms, "check-programs", 256, N_("check all programs") },
     { aListOptions, "list-options", 256, N_("|COMPONENT|list options") },
     { aChangeOptions, "change-options", 256, N_("|COMPONENT|change options") },
+    { aCheckOptions, "check-options", 256, N_("|COMPONENT|check options") },
     { aApplyDefaults, "apply-defaults", 256,
       N_("apply global default values") },
+    { aListDirs, "list-dirs", 256,
+      N_("get the configuration directories for gpgconf") },
     { aListConfig,   "list-config", 256,
       N_("list global configuration file") },
     { aCheckConfig,   "check-config", 256,
@@ -163,10 +168,12 @@ main (int argc, char **argv)
         case oVerbose:   opt.verbose++; break;
         case oNoVerbose: opt.verbose = 0; break;
 
+       case aListDirs:
         case aListComponents:
         case aCheckPrograms:
         case aListOptions:
         case aChangeOptions:
+        case aCheckOptions:
         case aApplyDefaults:
         case aListConfig:
         case aCheckConfig:
@@ -192,11 +199,12 @@ main (int argc, char **argv)
 
     case aCheckPrograms:
       /* Check all programs. */
-      gc_component_check_programs (get_outfp (&outfp));
+      gc_check_programs (get_outfp (&outfp));
       break;
 
     case aListOptions:
     case aChangeOptions:
+    case aCheckOptions:
       if (!fname)
        {
          fputs (_("usage: gpgconf [options] "), stderr);
@@ -219,8 +227,10 @@ main (int argc, char **argv)
             exit (1);
          if (cmd == aListOptions)
            gc_component_list_options (idx, get_outfp (&outfp));
+         else if (cmd == aChangeOptions)
+            gc_component_change_options (idx, stdin, get_outfp (&outfp));
          else
-            gc_component_change_options (idx, stdin);
+           gc_component_check_options (idx, get_outfp (&outfp), NULL);
        }
       break;
 
@@ -247,6 +257,15 @@ main (int argc, char **argv)
       if (gc_process_gpgconf_conf (NULL, 1, 1, NULL))
         exit (1);
       break;
+      
+    case aListDirs:
+      /* Show the system configuration directory for gpgconf.  */
+      get_outfp (&outfp);
+      fprintf (outfp, "sysconfdir:%s\n",
+              gc_percent_escape (gnupg_sysconfdir ()));
+      fprintf (outfp, "bindir:%s\n",
+              gc_percent_escape (gnupg_bindir ()));
+      break;
     }
 
   if (outfp && outfp != stdout)