Really remove file.
[gpgme.git] / gpgme / util.h
1 /* util.h 
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 #ifndef UTIL_H
22 #define UTIL_H
23
24 #include "gpgme.h"
25
26 \f
27 #define DIM(v) (sizeof(v)/sizeof((v)[0]))
28
29 \f
30 /*-- {posix,w32}-util.c --*/
31 const char *_gpgme_get_gpg_path (void);
32 const char *_gpgme_get_gpgsm_path (void);
33
34 \f
35 /*-- replacement functions in <funcname>.c --*/
36 #ifdef HAVE_CONFIG_H
37 #ifndef HAVE_STPCPY
38 char *stpcpy (char *a, const char *b);
39 #endif
40
41 #if !HAVE_VASPRINTF
42 #include <stdarg.h>
43 int vasprintf (char **result, const char *format, va_list args);
44 int asprintf (char **result, const char *format, ...);
45 #endif
46
47 #if !HAVE_FOPENCOOKIE
48 #include <fcntl.h> /* make sure that ssize_t and off_t are defined */
49 typedef struct
50 {
51   ssize_t (*read)(void*,char*,size_t);
52   ssize_t (*write)(void*,const char*,size_t);
53   int (*seek)(void*,off_t*,int);
54   int (*close)(void*);
55 } _IO_cookie_io_functions_t;
56 typedef _IO_cookie_io_functions_t cookie_io_functions_t;
57 FILE *fopencookie (void *cookie, const char *opentype,
58                    cookie_io_functions_t funclist);
59 #endif /*!HAVE_FOPENCOOKIE*/
60 #endif /*HAVE_CONFIG_H*/
61
62 \f
63 /*-- conversion.c --*/
64 /* Convert two hexadecimal digits from STR to the value they
65    represent.  Returns -1 if one of the characters is not a
66    hexadecimal digit.  */
67 int _gpgme_hextobyte (const unsigned char *str);
68
69 /* Decode the C formatted string SRC and store the result in the
70    buffer *DESTP which is LEN bytes long.  If LEN is zero, then a
71    large enough buffer is allocated with malloc and *DESTP is set to
72    the result.  Currently, LEN is only used to specify if allocation
73    is desired or not, the caller is expected to make sure that *DESTP
74    is large enough if LEN is not zero.  */
75 GpgmeError _gpgme_decode_c_string (const char *src, char **destp, int len);
76
77 /* Decode the percent escaped string SRC and store the result in the
78    buffer *DESTP which is LEN bytes long.  If LEN is zero, then a
79    large enough buffer is allocated with malloc and *DESTP is set to
80    the result.  Currently, LEN is only used to specify if allocation
81    is desired or not, the caller is expected to make sure that *DESTP
82    is large enough if LEN is not zero.  */
83 GpgmeError _gpgme_decode_percent_string (const char *src, char **destp,
84                                          int len);
85
86 GpgmeError _gpgme_map_gnupg_error (char *err);
87
88 #endif /* UTIL_H */