libksba  1.6.0
About: KSBA is a library to make the tasks of working with X.509 certificates, CMS data and related objects more easy.
  Fossies Dox: libksba-1.6.0.tar.bz2  ("unofficial" and yet experimental doxygen-generated source code documentation)  

util.h
Go to the documentation of this file.
1 /* util.h
2  * Copyright (C) 2001, 2009, 2012 g10 Code GmbH
3  *
4  * This file is part of KSBA.
5  *
6  * KSBA is free software; you can redistribute it and/or modify
7  * it under the terms of either
8  *
9  * - the GNU Lesser General Public License as published by the Free
10  * Software Foundation; either version 3 of the License, or (at
11  * your option) any later version.
12  *
13  * or
14  *
15  * - the GNU General Public License as published by the Free
16  * Software Foundation; either version 2 of the License, or (at
17  * your option) any later version.
18  *
19  * or both in parallel, as here.
20  *
21  * KSBA is distributed in the hope that it will be useful, but WITHOUT
22  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
23  * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
24  * License for more details.
25  *
26  * You should have received a copies of the GNU General Public License
27  * and the GNU Lesser General Public License along with this program;
28  * if not, see <http://www.gnu.org/licenses/>.
29  */
30 
31 #ifndef UTIL_H
32 #define UTIL_H
33 
34 #ifdef BUILD_GENTOOLS
35 #error file may not be be used for build time tools
36 #endif
37 
38 
39 #include "visibility.h"
40 
41 
42 gpg_error_t _ksba_hash_buffer (const char *oid,
43  const void *buffer, size_t length,
44  size_t resultsize,
45  unsigned char *result, size_t *resultlen);
46 
47 void *_ksba_reallocarray (void *a, size_t oldnmemb, size_t nmemb, size_t size);
48 
49 void *_ksba_xmalloc (size_t n );
50 void *_ksba_xcalloc (size_t n, size_t m );
51 void *_ksba_xrealloc (void *p, size_t n);
52 char *_ksba_xstrdup (const char *p);
53 
54 #define xtrymalloc(a) ksba_malloc((a))
55 #define xtrycalloc(a,b) ksba_calloc((a),(b))
56 #define xtryrealloc(a,b) ksba_realloc((a),(b))
57 #define xtrystrdup(a) ksba_strdup((a))
58 #define xfree(a) ksba_free((a))
59 
60 #define xmalloc(a) _ksba_xmalloc((a))
61 #define xcalloc(a,b) _ksba_xcalloc((a),(b))
62 #define xrealloc(a,b) _ksba_xrealloc((a),(b))
63 #define xstrdup(a) _ksba_xstrdup((a))
64 
65 
66 #define DIM(v) (sizeof(v)/sizeof((v)[0]))
67 #define DIMof(type,member) DIM(((type *)0)->member)
68 #ifndef STR
69 # define STR(v) #v
70 #endif
71 #ifndef STR2
72 # define STR2(v) STR(v)
73 #endif
74 
75 #define return_if_fail(expr) do { \
76  if (!(expr)) { \
77  fprintf (stderr, "%s:%d: assertion `%s' failed\n", \
78  __FILE__, __LINE__, #expr ); \
79  return; \
80  } } while (0)
81 #define return_null_if_fail(expr) do { \
82  if (!(expr)) { \
83  fprintf (stderr, "%s:%d: assertion `%s' failed\n", \
84  __FILE__, __LINE__, #expr ); \
85  return NULL; \
86  } } while (0)
87 #define return_val_if_fail(expr,val) do { \
88  if (!(expr)) { \
89  fprintf (stderr, "%s:%d: assertion `%s' failed\n", \
90  __FILE__, __LINE__, #expr ); \
91  return (val); \
92  } } while (0)
93 #define never_reached() do { \
94  fprintf (stderr, "%s:%d: oops; should never get here\n", \
95  __FILE__, __LINE__ ); \
96  } while (0)
97 
98 
99 #ifndef HAVE_STPCPY
100 char *_ksba_stpcpy (char *a, const char *b);
101 #define stpcpy(a,b) _ksba_stpcpy ((a), (b))
102 #endif
103 
104 int _ksba_ascii_memcasecmp (const void *a_arg, const void *b_arg, size_t n);
105 #define ascii_memcasecmp(a,b,n) _ksba_ascii_memcasecmp ((a),(b),(n))
106 
107 /* some macros to replace ctype ones and avoid locale problems */
108 #define spacep(p) (*(p) == ' ' || *(p) == '\t')
109 #define digitp(p) (*(p) >= '0' && *(p) <= '9')
110 #define hexdigitp(a) (digitp (a) \
111  || (*(a) >= 'A' && *(a) <= 'F') \
112  || (*(a) >= 'a' && *(a) <= 'f'))
113 /* the atoi macros assume that the buffer has only valid digits */
114 #define atoi_1(p) (*(p) - '0' )
115 #define atoi_2(p) ((atoi_1(p) * 10) + atoi_1((p)+1))
116 #define atoi_4(p) ((atoi_2(p) * 100) + atoi_2((p)+2))
117 #define xtoi_1(p) (*(p) <= '9'? (*(p)- '0'): \
118  *(p) <= 'F'? (*(p)-'A'+10):(*(p)-'a'+10))
119 #define xtoi_2(p) ((xtoi_1(p) * 16) + xtoi_1((p)+1))
120 
121 #endif /* UTIL_H */
const char * oid
Definition: cms.c:71
int _ksba_ascii_memcasecmp(const void *a_arg, const void *b_arg, size_t n)
Definition: util.c:296
char * _ksba_stpcpy(char *a, const char *b)
Definition: util.c:275
char * _ksba_xstrdup(const char *p)
Definition: util.c:264
gpg_error_t _ksba_hash_buffer(const char *oid, const void *buffer, size_t length, size_t resultsize, unsigned char *result, size_t *resultlen)
Definition: util.c:111
void * _ksba_xcalloc(size_t n, size_t m)
Definition: util.c:245
void * _ksba_reallocarray(void *a, size_t oldnmemb, size_t nmemb, size_t size)
Definition: util.c:187
void * _ksba_xrealloc(void *p, size_t n)
Definition: util.c:254
void * _ksba_xmalloc(size_t n)
Definition: util.c:236