bug-gnulib
[Top][All Lists]
Advanced

[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.




reply via email to

[Prev in Thread] Current Thread [Next in Thread]