* gpgsm/t-import.c (check_result): gpgsm does now return info in
[gpgme.git] / tests / gpg / t-support.h
1 /* t-support.h - Helper routines for regression tests.
2    Copyright (C) 2000 Werner Koch (dd9jn)
3    Copyright (C) 2001, 2002, 2003 g10 Code GmbH
4
5    This file is part of GPGME.
6  
7    GPGME is free software; you can redistribute it and/or modify it
8    under the terms of the GNU General Public License as published by
9    the Free Software Foundation; either version 2 of the License, or
10    (at your option) any later version.
11  
12    GPGME is distributed in the hope that it will be useful, but
13    WITHOUT ANY WARRANTY; without even the implied warranty of
14    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15    General Public License for more details.
16  
17    You should have received a copy of the GNU General Public License
18    along with GPGME; if not, write to the Free Software Foundation,
19    Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
20
21 #include <unistd.h>
22 #include <errno.h>
23 #include <stdlib.h>
24 #include <locale.h>
25
26 #include <gpgme.h>
27
28 #ifndef DIM
29 #define DIM(v)               (sizeof(v)/sizeof((v)[0]))
30 #endif
31
32 #define fail_if_err(err)                                        \
33   do                                                            \
34     {                                                           \
35       if (err)                                                  \
36         {                                                       \
37           fprintf (stderr, "%s:%d: %s: %s\n",                   \
38                    __FILE__, __LINE__, gpgme_strsource (err),   \
39                    gpgme_strerror (err));                       \
40           exit (1);                                             \
41         }                                                       \
42     }                                                           \
43   while (0)
44
45
46 void
47 print_data (gpgme_data_t dh)
48 {
49 #define BUF_SIZE 512
50   char buf[BUF_SIZE + 1];
51   int ret;
52   
53   ret = gpgme_data_seek (dh, 0, SEEK_SET);
54   if (ret)
55     fail_if_err (gpgme_err_code_from_errno (errno));
56   while ((ret = gpgme_data_read (dh, buf, BUF_SIZE)) > 0)
57     fwrite (buf, ret, 1, stdout);
58   if (ret < 0)
59     fail_if_err (gpgme_err_code_from_errno (errno));
60 }
61
62
63 gpgme_error_t
64 passphrase_cb (void *opaque, const char *uid_hint, const char *passphrase_info,
65                int last_was_bad, int fd)
66 {
67   write (fd, "abc\n", 4);
68   return 0;
69 }
70
71
72 char *
73 make_filename (const char *fname)
74 {
75   const char *srcdir = getenv ("srcdir");
76   char *buf;
77
78   if (!srcdir)
79     srcdir = ".";
80   buf = malloc (strlen(srcdir) + strlen(fname) + 2);
81   if (!buf) 
82     exit (8);
83   strcpy (buf, srcdir);
84   strcat (buf, "/");
85   strcat (buf, fname);
86   return buf;
87 }
88
89
90 void
91 init_gpgme (gpgme_protocol_t proto)
92 {
93   gpgme_error_t err;
94
95   gpgme_check_version (NULL);
96   setlocale (LC_ALL, "");
97   gpgme_set_locale (NULL, LC_CTYPE, setlocale (LC_CTYPE, NULL));
98   gpgme_set_locale (NULL, LC_MESSAGES, setlocale (LC_MESSAGES, NULL));
99
100   err = gpgme_engine_check_version (proto);
101   fail_if_err (err);
102 }