[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
base64 patches
From: |
Simon Josefsson |
Subject: |
base64 patches |
Date: |
Tue, 28 Jun 2005 00:07:08 +0200 |
User-agent: |
Gnus/5.110004 (No Gnus v0.4) Emacs/22.0.50 (gnu/linux) |
Based on the discussion in bug-coreutils, I installed this. More
review is always welcome. The complete code will be posted to
bug-coreutils later on too.
2005-06-28 Simon Josefsson <address@hidden>
* base64.c (base64_encode): Indent. Rename 'b64' to avoid
collision with global variable. Better indentation. Don't
increment buffer pointer beyond buffer end. Based on comments
from Paul Eggert <address@hidden>.
* base64.h: Indent.
Index: lib/base64.h
===================================================================
RCS file: /cvsroot/gnulib/gnulib/lib/base64.h,v
retrieving revision 1.3
diff -u -p -r1.3 base64.h
--- lib/base64.h 14 May 2005 06:03:57 -0000 1.3
+++ lib/base64.h 27 Jun 2005 22:04:56 -0000
@@ -1,5 +1,5 @@
/* base64.h -- Encode binary data using printable characters.
- Copyright (C) 2004 Free Software Foundation, Inc.
+ Copyright (C) 2004, 2005 Free Software Foundation, Inc.
Written by Simon Josefsson.
This program is free software; you can redistribute it and/or modify
@@ -37,9 +37,9 @@ extern void base64_encode (const char *r
extern size_t base64_encode_alloc (const char *in, size_t inlen, char **out);
extern bool base64_decode (const char *restrict in, size_t inlen,
- char *restrict out, size_t * outlen);
+ char *restrict out, size_t *outlen);
extern bool base64_decode_alloc (const char *in, size_t inlen,
- char **out, size_t * outlen);
+ char **out, size_t *outlen);
#endif /* BASE64_H */
Index: lib/base64.c
===================================================================
RCS file: /cvsroot/gnulib/gnulib/lib/base64.c,v
retrieving revision 1.3
diff -u -p -r1.3 base64.c
--- lib/base64.c 14 May 2005 06:03:57 -0000 1.3
+++ lib/base64.c 27 Jun 2005 22:04:56 -0000
@@ -1,5 +1,5 @@
/* 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
@@ -65,30 +65,34 @@ void
base64_encode (const char *restrict in, size_t inlen,
char *restrict out, size_t outlen)
{
- const char b64[64] =
+ const char b64str[64] =
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
while (inlen && outlen)
{
- *out++ = b64[to_uchar (in[0]) >> 2];
+ *out++ = b64str[to_uchar (in[0]) >> 2];
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
- ? 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;
- *out++ = inlen ? b64[to_uchar (in[2]) & 0x3f] : '=';
+ *out++ = inlen ? b64str[to_uchar (in[2]) & 0x3f] : '=';
if (!--outlen)
break;
if (inlen)
inlen--;
- in += 3;
+ if (inlen)
+ in += 3;
}
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,
- char *restrict out, size_t * outlen)
+ char *restrict out, size_t *outlen)
{
size_t outleft = *outlen;
@@ -376,7 +380,7 @@ base64_decode (const char *restrict in,
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.
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- base64 patches,
Simon Josefsson <=