projects
/
gnulib.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
autoupdate
[gnulib.git]
/
lib
/
base64.c
diff --git
a/lib/base64.c
b/lib/base64.c
index
2c5f539
..
f1e0604
100644
(file)
--- a/
lib/base64.c
+++ b/
lib/base64.c
@@
-1,5
+1,5
@@
/* base64.c -- Encode binary data using printable characters.
/* base64.c -- Encode binary data using printable characters.
- Copyright (C) 1999, 2000, 2001, 2004 Free Software Foundation, Inc.
+ Copyright (C) 1999, 2000, 2001, 2004
, 2005
Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@
-36,7
+36,7
@@
* FAIL: input too long
* if (out == NULL)
* FAIL: memory allocation error
* FAIL: input too long
* if (out == NULL)
* FAIL: memory allocation error
- * OK: data in OUT/LEN.
+ * OK: data in OUT/
OUT
LEN.
*
*/
*
*/
@@
-65,30
+65,34
@@
void
base64_encode (const char *restrict in, size_t inlen,
char *restrict out, size_t outlen)
{
base64_encode (const char *restrict in, size_t inlen,
char *restrict out, size_t outlen)
{
-
const char b64
[64] =
+
static const char b64str
[64] =
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
while (inlen && outlen)
{
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
while (inlen && outlen)
{
- *out++ = b64[to_uchar (in[0]) >> 2];
+ *out++ = b64
str
[to_uchar (in[0]) >> 2];
if (!--outlen)
break;
if (!--outlen)
break;
- *out++ = b64[((to_uchar (in[0]) << 4)
- + (--inlen ? to_uchar (in[1]) >> 4 : 0)) & 0x3f];
+ *out++ = b64str[((to_uchar (in[0]) << 4)
+ + (--inlen ? to_uchar (in[1]) >> 4 : 0))
+ & 0x3f];
if (!--outlen)
break;
*out++ =
(inlen
if (!--outlen)
break;
*out++ =
(inlen
- ? b64[((to_uchar (in[1]) << 2)
- + (--inlen ? to_uchar (in[2]) >> 6 : 0)) & 0x3f] : '=');
+ ? b64str[((to_uchar (in[1]) << 2)
+ + (--inlen ? to_uchar (in[2]) >> 6 : 0))
+ & 0x3f]
+ : '=');
if (!--outlen)
break;
if (!--outlen)
break;
- *out++ = inlen ? b64[to_uchar (in[2]) & 0x3f] : '=';
+ *out++ = inlen ? b64
str
[to_uchar (in[2]) & 0x3f] : '=';
if (!--outlen)
break;
if (inlen)
inlen--;
if (!--outlen)
break;
if (inlen)
inlen--;
- in += 3;
+ if (inlen)
+ in += 3;
}
if (outlen)
}
if (outlen)
@@
-289,7
+293,7
@@
isbase64 (char ch)
encountered, decoding is stopped and false is returned. */
bool
base64_decode (const char *restrict in, size_t inlen,
encountered, decoding is stopped and false is returned. */
bool
base64_decode (const char *restrict in, size_t inlen,
- char *restrict out, size_t *
outlen)
+ char *restrict out, size_t *outlen)
{
size_t outleft = *outlen;
{
size_t outleft = *outlen;
@@
-376,7
+380,7
@@
base64_decode (const char *restrict in, size_t inlen,
undefined. */
bool
base64_decode_alloc (const char *in, size_t inlen, char **out,
undefined. */
bool
base64_decode_alloc (const char *in, size_t inlen, char **out,
- size_t *
outlen)
+ size_t *outlen)
{
/* This may allocate a few bytes too much, depending on input,
but it's not worth the extra CPU time to compute the exact amount.
{
/* This may allocate a few bytes too much, depending on input,
but it's not worth the extra CPU time to compute the exact amount.