Tizen 2.0 Release
[external/tizen-coreutils.git] / lib / base64.h
1 /* -*- buffer-read-only: t -*- vi: set ro: */
2 /* DO NOT EDIT! GENERATED AUTOMATICALLY! */
3 /* base64.h -- Encode binary data using printable characters.
4    Copyright (C) 2004, 2005, 2006 Free Software Foundation, Inc.
5    Written by Simon Josefsson.
6
7    This program is free software; you can redistribute it and/or modify
8    it under the terms of the GNU General Public License as published by
9    the Free Software Foundation; either version 2, or (at your option)
10    any later version.
11
12    This program is distributed in the hope that it will be useful,
13    but WITHOUT ANY WARRANTY; without even the implied warranty of
14    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15    GNU General Public License for more details.
16
17    You should have received a copy of the GNU General Public License
18    along with this program; if not, write to the Free Software Foundation,
19    Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.  */
20
21 #ifndef BASE64_H
22 # define BASE64_H
23
24 /* Get size_t. */
25 # include <stddef.h>
26
27 /* Get bool. */
28 # include <stdbool.h>
29
30 /* This uses that the expression (n+(k-1))/k means the smallest
31    integer >= n/k, i.e., the ceiling of n/k.  */
32 # define BASE64_LENGTH(inlen) ((((inlen) + 2) / 3) * 4)
33
34 struct base64_decode_context
35 {
36   unsigned int i;
37   char buf[4];
38 };
39
40 extern bool isbase64 (char ch);
41
42 extern void base64_encode (const char *restrict in, size_t inlen,
43                            char *restrict out, size_t outlen);
44
45 extern size_t base64_encode_alloc (const char *in, size_t inlen, char **out);
46
47 extern void base64_decode_ctx_init (struct base64_decode_context *ctx);
48 extern bool base64_decode (struct base64_decode_context *ctx,
49                            const char *restrict in, size_t inlen,
50                            char *restrict out, size_t *outlen);
51
52 extern bool base64_decode_alloc (struct base64_decode_context *ctx,
53                                  const char *in, size_t inlen,
54                                  char **out, size_t *outlen);
55
56 #endif /* BASE64_H */