addrutil: Re-indent.
[wk-misc.git] / encrypt-to-p.c
1 /* encrypt-to-p.c - Do we have an encrypt-to in gpg.conf?
2  * Copyright (C) 2008 g10 Code GmbH
3  *
4  * This program is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU General Public License as
6  * published by the Free Software Foundation; either version 3 of 
7  * the License, or (at your option) any later version.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program; if not, see <http://www.gnu.org/licenses/>.
16  */
17
18
19 #include <stdlib.h>
20 #include <string.h>
21 #include <locale.h>
22 #include <gpgme.h>
23
24 #define fail_if_err(err)                                        \
25   do                                                            \
26     {                                                           \
27       if (err)                                                  \
28         {                                                       \
29           fprintf (stderr, "%s:%d: %s: %s\n",                   \
30                    __FILE__, __LINE__, gpgme_strsource (err),   \
31                    gpgme_strerror (err));                       \
32           exit (1);                                             \
33         }                                                       \
34     }                                                           \
35   while (0)
36
37
38 int 
39 main (int argc, char **argv)
40 {
41   gpg_error_t err;
42   gpgme_ctx_t ctx;
43   gpgme_conf_comp_t conf;
44   gpgme_conf_comp_t comp;
45   gpgme_conf_opt_t opt;
46   int result = 1;
47
48   gpgme_check_version (NULL);
49   setlocale (LC_ALL, "");
50   gpgme_set_locale (NULL, LC_CTYPE, setlocale (LC_CTYPE, NULL));
51   gpgme_set_locale (NULL, LC_MESSAGES, setlocale (LC_MESSAGES, NULL));
52
53   err = gpgme_engine_check_version (GPGME_PROTOCOL_OpenPGP);
54   fail_if_err (err);
55
56   err = gpgme_new (&ctx);
57   fail_if_err (err);
58
59   err = gpgme_op_conf_load (ctx, &conf);
60   fail_if_err (err);
61
62   for (comp = conf; comp;  comp = comp->next)
63     {
64       if (!strcmp (comp->name, "gpg"))
65         {
66           for (opt = comp->options; opt; opt = opt->next)
67             if ( !(opt->flags & GPGME_CONF_GROUP)
68                  && !strcmp (opt->name, "encrypt-to"))
69               {
70                 if (opt->value && opt->alt_type == GPGME_CONF_STRING)
71                   {
72                     printf ("%s\n", opt->value->value.string);
73                     result = 0;
74                   }
75                 break;
76               }
77           break;
78         }
79     }
80
81   gpgme_conf_release (conf);
82   gpgme_release (ctx);
83
84   return result;
85 }
86
87 /*
88 Local Variables:
89 compile-command: "gcc -Wall -g -lgpgme -o encrypt-to-p encrypt-to-p.c"
90 End:
91 */