annotate lib/base64.h @ 40057:b06060465f09

maint: Run 'make update-copyright'
author Paul Eggert <eggert@cs.ucla.edu>
date Tue, 01 Jan 2019 00:25:11 +0100
parents 10eb9086bea0
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
5498
ac6438eb46c6 Add base64.
Simon Josefsson <simon@josefsson.org>
parents:
diff changeset
1 /* base64.h -- Encode binary data using printable characters.
40057
b06060465f09 maint: Run 'make update-copyright'
Paul Eggert <eggert@cs.ucla.edu>
parents: 19484
diff changeset
2 Copyright (C) 2004-2006, 2009-2019 Free Software Foundation, Inc.
5498
ac6438eb46c6 Add base64.
Simon Josefsson <simon@josefsson.org>
parents:
diff changeset
3 Written by Simon Josefsson.
ac6438eb46c6 Add base64.
Simon Josefsson <simon@josefsson.org>
parents:
diff changeset
4
ac6438eb46c6 Add base64.
Simon Josefsson <simon@josefsson.org>
parents:
diff changeset
5 This program is free software; you can redistribute it and/or modify
ac6438eb46c6 Add base64.
Simon Josefsson <simon@josefsson.org>
parents:
diff changeset
6 it under the terms of the GNU General Public License as published by
ac6438eb46c6 Add base64.
Simon Josefsson <simon@josefsson.org>
parents:
diff changeset
7 the Free Software Foundation; either version 2, or (at your option)
ac6438eb46c6 Add base64.
Simon Josefsson <simon@josefsson.org>
parents:
diff changeset
8 any later version.
ac6438eb46c6 Add base64.
Simon Josefsson <simon@josefsson.org>
parents:
diff changeset
9
ac6438eb46c6 Add base64.
Simon Josefsson <simon@josefsson.org>
parents:
diff changeset
10 This program is distributed in the hope that it will be useful,
ac6438eb46c6 Add base64.
Simon Josefsson <simon@josefsson.org>
parents:
diff changeset
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
ac6438eb46c6 Add base64.
Simon Josefsson <simon@josefsson.org>
parents:
diff changeset
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
ac6438eb46c6 Add base64.
Simon Josefsson <simon@josefsson.org>
parents:
diff changeset
13 GNU General Public License for more details.
ac6438eb46c6 Add base64.
Simon Josefsson <simon@josefsson.org>
parents:
diff changeset
14
ac6438eb46c6 Add base64.
Simon Josefsson <simon@josefsson.org>
parents:
diff changeset
15 You should have received a copy of the GNU General Public License
19190
9759915b2aca all: prefer https: URLs
Paul Eggert <eggert@cs.ucla.edu>
parents: 18626
diff changeset
16 along with this program; if not, see <https://www.gnu.org/licenses/>. */
5498
ac6438eb46c6 Add base64.
Simon Josefsson <simon@josefsson.org>
parents:
diff changeset
17
ac6438eb46c6 Add base64.
Simon Josefsson <simon@josefsson.org>
parents:
diff changeset
18 #ifndef BASE64_H
ac6438eb46c6 Add base64.
Simon Josefsson <simon@josefsson.org>
parents:
diff changeset
19 # define BASE64_H
ac6438eb46c6 Add base64.
Simon Josefsson <simon@josefsson.org>
parents:
diff changeset
20
ac6438eb46c6 Add base64.
Simon Josefsson <simon@josefsson.org>
parents:
diff changeset
21 /* Get size_t. */
6662
ca817b50a17f * base64.h: Indent #define's. From Jim Meyering <jim@meyering.net>.
Simon Josefsson <simon@josefsson.org>
parents: 5936
diff changeset
22 # include <stddef.h>
5498
ac6438eb46c6 Add base64.
Simon Josefsson <simon@josefsson.org>
parents:
diff changeset
23
ac6438eb46c6 Add base64.
Simon Josefsson <simon@josefsson.org>
parents:
diff changeset
24 /* Get bool. */
6662
ca817b50a17f * base64.h: Indent #define's. From Jim Meyering <jim@meyering.net>.
Simon Josefsson <simon@josefsson.org>
parents: 5936
diff changeset
25 # include <stdbool.h>
5498
ac6438eb46c6 Add base64.
Simon Josefsson <simon@josefsson.org>
parents:
diff changeset
26
17031
8f51efda6717 base64: Use extern C scope in header file, for C++.
Simon Josefsson <simon@josefsson.org>
parents: 16366
diff changeset
27 # ifdef __cplusplus
8f51efda6717 base64: Use extern C scope in header file, for C++.
Simon Josefsson <simon@josefsson.org>
parents: 16366
diff changeset
28 extern "C" {
8f51efda6717 base64: Use extern C scope in header file, for C++.
Simon Josefsson <simon@josefsson.org>
parents: 16366
diff changeset
29 # endif
8f51efda6717 base64: Use extern C scope in header file, for C++.
Simon Josefsson <simon@josefsson.org>
parents: 16366
diff changeset
30
5498
ac6438eb46c6 Add base64.
Simon Josefsson <simon@josefsson.org>
parents:
diff changeset
31 /* This uses that the expression (n+(k-1))/k means the smallest
ac6438eb46c6 Add base64.
Simon Josefsson <simon@josefsson.org>
parents:
diff changeset
32 integer >= n/k, i.e., the ceiling of n/k. */
6662
ca817b50a17f * base64.h: Indent #define's. From Jim Meyering <jim@meyering.net>.
Simon Josefsson <simon@josefsson.org>
parents: 5936
diff changeset
33 # define BASE64_LENGTH(inlen) ((((inlen) + 2) / 3) * 4)
5498
ac6438eb46c6 Add base64.
Simon Josefsson <simon@josefsson.org>
parents:
diff changeset
34
10090
8ea8f3be5116 Sync gnulib base64 with coreutils base64.
Simon Josefsson <simon@josefsson.org>
parents: 6662
diff changeset
35 struct base64_decode_context
8ea8f3be5116 Sync gnulib base64 with coreutils base64.
Simon Josefsson <simon@josefsson.org>
parents: 6662
diff changeset
36 {
8ea8f3be5116 Sync gnulib base64 with coreutils base64.
Simon Josefsson <simon@josefsson.org>
parents: 6662
diff changeset
37 unsigned int i;
8ea8f3be5116 Sync gnulib base64 with coreutils base64.
Simon Josefsson <simon@josefsson.org>
parents: 6662
diff changeset
38 char buf[4];
8ea8f3be5116 Sync gnulib base64 with coreutils base64.
Simon Josefsson <simon@josefsson.org>
parents: 6662
diff changeset
39 };
8ea8f3be5116 Sync gnulib base64 with coreutils base64.
Simon Josefsson <simon@josefsson.org>
parents: 6662
diff changeset
40
16128
6beadb731202 mark functions with const and pure attributes
Jim Meyering <meyering@redhat.com>
parents: 14079
diff changeset
41 extern bool isbase64 (char ch) _GL_ATTRIBUTE_CONST;
5604
f946018d919e * base64.h (isbase64): Add.
Simon Josefsson <simon@josefsson.org>
parents: 5498
diff changeset
42
5498
ac6438eb46c6 Add base64.
Simon Josefsson <simon@josefsson.org>
parents:
diff changeset
43 extern void base64_encode (const char *restrict in, size_t inlen,
12421
e8d2c6fc33ad Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents: 10090
diff changeset
44 char *restrict out, size_t outlen);
5498
ac6438eb46c6 Add base64.
Simon Josefsson <simon@josefsson.org>
parents:
diff changeset
45
ac6438eb46c6 Add base64.
Simon Josefsson <simon@josefsson.org>
parents:
diff changeset
46 extern size_t base64_encode_alloc (const char *in, size_t inlen, char **out);
ac6438eb46c6 Add base64.
Simon Josefsson <simon@josefsson.org>
parents:
diff changeset
47
10090
8ea8f3be5116 Sync gnulib base64 with coreutils base64.
Simon Josefsson <simon@josefsson.org>
parents: 6662
diff changeset
48 extern void base64_decode_ctx_init (struct base64_decode_context *ctx);
8ea8f3be5116 Sync gnulib base64 with coreutils base64.
Simon Josefsson <simon@josefsson.org>
parents: 6662
diff changeset
49
8ea8f3be5116 Sync gnulib base64 with coreutils base64.
Simon Josefsson <simon@josefsson.org>
parents: 6662
diff changeset
50 extern bool base64_decode_ctx (struct base64_decode_context *ctx,
12421
e8d2c6fc33ad Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents: 10090
diff changeset
51 const char *restrict in, size_t inlen,
e8d2c6fc33ad Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents: 10090
diff changeset
52 char *restrict out, size_t *outlen);
5498
ac6438eb46c6 Add base64.
Simon Josefsson <simon@josefsson.org>
parents:
diff changeset
53
10090
8ea8f3be5116 Sync gnulib base64 with coreutils base64.
Simon Josefsson <simon@josefsson.org>
parents: 6662
diff changeset
54 extern bool base64_decode_alloc_ctx (struct base64_decode_context *ctx,
12421
e8d2c6fc33ad Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents: 10090
diff changeset
55 const char *in, size_t inlen,
e8d2c6fc33ad Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents: 10090
diff changeset
56 char **out, size_t *outlen);
10090
8ea8f3be5116 Sync gnulib base64 with coreutils base64.
Simon Josefsson <simon@josefsson.org>
parents: 6662
diff changeset
57
8ea8f3be5116 Sync gnulib base64 with coreutils base64.
Simon Josefsson <simon@josefsson.org>
parents: 6662
diff changeset
58 #define base64_decode(in, inlen, out, outlen) \
12421
e8d2c6fc33ad Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents: 10090
diff changeset
59 base64_decode_ctx (NULL, in, inlen, out, outlen)
10090
8ea8f3be5116 Sync gnulib base64 with coreutils base64.
Simon Josefsson <simon@josefsson.org>
parents: 6662
diff changeset
60
8ea8f3be5116 Sync gnulib base64 with coreutils base64.
Simon Josefsson <simon@josefsson.org>
parents: 6662
diff changeset
61 #define base64_decode_alloc(in, inlen, out, outlen) \
12421
e8d2c6fc33ad Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents: 10090
diff changeset
62 base64_decode_alloc_ctx (NULL, in, inlen, out, outlen)
5498
ac6438eb46c6 Add base64.
Simon Josefsson <simon@josefsson.org>
parents:
diff changeset
63
17031
8f51efda6717 base64: Use extern C scope in header file, for C++.
Simon Josefsson <simon@josefsson.org>
parents: 16366
diff changeset
64 # ifdef __cplusplus
8f51efda6717 base64: Use extern C scope in header file, for C++.
Simon Josefsson <simon@josefsson.org>
parents: 16366
diff changeset
65 }
8f51efda6717 base64: Use extern C scope in header file, for C++.
Simon Josefsson <simon@josefsson.org>
parents: 16366
diff changeset
66 # endif
8f51efda6717 base64: Use extern C scope in header file, for C++.
Simon Josefsson <simon@josefsson.org>
parents: 16366
diff changeset
67
5498
ac6438eb46c6 Add base64.
Simon Josefsson <simon@josefsson.org>
parents:
diff changeset
68 #endif /* BASE64_H */