* gpg.c (print_algo_names): New. (list_config): Use it here for the
authorDavid Shaw <dshaw@jabberwocky.com>
Wed, 28 Nov 2007 15:09:52 +0000 (15:09 +0000)
committerDavid Shaw <dshaw@jabberwocky.com>
Wed, 28 Nov 2007 15:09:52 +0000 (15:09 +0000)
"ciphername" and "digestname" config items so we can get a
script-parseable list of the names.

g10/ChangeLog
g10/gpg.c

index cc736d2..1c1d3de 100644 (file)
@@ -1,3 +1,9 @@
+2007-11-28  David Shaw  <dshaw@jabberwocky.com>
+
+       * gpg.c (print_algo_names): New.
+       (list_config): Use it here for the "ciphername" and "digestname"
+       config items so we can get a script-parseable list of the names.
+
 2007-11-19  Werner Koch  <wk@g10code.com>
 
        * keyedit.c (keyedit_menu): String grammar fix.
index 0c28bc1..b333779 100644 (file)
--- a/g10/gpg.c
+++ b/g10/gpg.c
@@ -1324,7 +1324,6 @@ check_permissions(const char *path,int item)
   return 0;
 }
 
-
 static void
 print_algo_numbers(int (*checker)(int))
 {
@@ -1343,6 +1342,23 @@ print_algo_numbers(int (*checker)(int))
     }
 }
 
+static void
+print_algo_names(int (*checker)(int),const char *(*mapper)(int))
+{
+  int i,first=1;
+
+  for(i=0;i<=110;i++)
+    {
+      if(!checker(i))
+       {
+         if(first)
+           first=0;
+         else
+           printf(";");
+         printf("%s",mapper(i));
+       }
+    }
+}
 
 /* In the future, we can do all sorts of interesting configuration
    output here.  For now, just give "group" as the Enigmail folks need
@@ -1410,6 +1426,14 @@ list_config(char *items)
          any=1;
        }
 
+      if(show_all || ascii_strcasecmp(name,"ciphername")==0)
+       {
+         printf("cfg:ciphername:");
+         print_algo_names(check_cipher_algo,cipher_algo_to_string);
+         printf("\n");
+         any=1;
+       }
+
       if(show_all
         || ascii_strcasecmp(name,"digest")==0
         || ascii_strcasecmp(name,"hash")==0)
@@ -1420,6 +1444,16 @@ list_config(char *items)
          any=1;
        }
 
+      if(show_all
+        || ascii_strcasecmp(name,"digestname")==0
+        || ascii_strcasecmp(name,"hashname")==0)
+       {
+         printf("cfg:digestname:");
+         print_algo_names(check_digest_algo,digest_algo_to_string);
+         printf("\n");
+         any=1;
+       }
+
       if(show_all || ascii_strcasecmp(name,"compress")==0)
        {
          printf("cfg:compress:");