Remove unused Base64 codec

stable-5.4
Nicolas Hake 2013-08-04 18:10:10 +02:00
parent 41926866cc
commit 9ceb69236b
3 changed files with 0 additions and 189 deletions

View File

@ -357,8 +357,6 @@ set(OC_CLONK_SOURCES
src/lib/PathFinder.cpp
src/lib/PathFinder.h
src/lib/StdAdaptors.h
src/lib/StdBase64.cpp
src/lib/StdBase64.h
src/lib/StdColors.h
src/lib/StdMesh.cpp
src/lib/StdMesh.h

View File

@ -1,165 +0,0 @@
/*
* OpenClonk, http://www.openclonk.org
*
* Copyright (c) 2003-2004 Peter Wortmann
* Copyright (c) 2011 Nicolas Hake
* Copyright (c) 2001-2009, RedWolf Design GmbH, http://www.clonk.de
*
* Portions might be copyrighted by other authors who have contributed
* to OpenClonk.
*
* Permission to use, copy, modify, and/or distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
* See isc_license.txt for full license and disclaimer.
*
* "Clonk" is a registered trademark of Matthes Bender.
* See clonk_trademark_license.txt for full license.
*/
/* Base64 encoding / decoding */
#include "C4Include.h"
#include "StdBase64.h"
// Peter's B64Encode implementation would yield incorrect results in Release build
// so I replaced it with some other implementation which does the job...
// base 64 table
const char Base64Tbl [] =
{ 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q',
'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h',
'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y',
'z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '+', '/'
};
// reversed base 64 table
const unsigned char Base64RTbl[] =
{
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0x3e, 0xff, 0xff, 0xff, 0x3f,
0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b,
0x3c, 0x3d, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06,
0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e,
0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16,
0x17, 0x18, 0x19, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20,
0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28,
0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30,
0x31, 0x32, 0x33, 0xff, 0xff, 0xff, 0xff, 0xff
};
// base 64 padding char
const char Base64Pad = '=';
char *B64Encode(const void *pData, int iSize)
{
// ensure b64 table has correct size
if (sizeof(Base64Tbl) != 64) return NULL;
// calc output size
int ioSize = (iSize / 3) * 4;
if (iSize % 3) ioSize += 4; // end padding
ioSize += (ioSize / 76) * 2; // line breaks
ioSize++; // null char
// alloc output mem
char *poData = new char [ioSize];
// start encoding
const unsigned char *pPos = (const unsigned char *)pData; char *poPos = poData;
for (int i = 0; i < iSize / 3; i++)
{
unsigned char c1 = *pPos++, c2 = *pPos++, c3 = *pPos++;
// char 1
*(poPos++) = Base64Tbl[ (c1 >> 2)];
// char 2
*(poPos++) = Base64Tbl[((c1 & 0x3) << 4) | (c2 >> 4)];
// char 3
*(poPos++) = Base64Tbl[((c2 & 0xf) << 2) | (c3 >> 6)];
// char 4
*(poPos++) = Base64Tbl[ c3 & 0x3f];
// line break (every 76 characters)
if (!((i + 1) % 19)) { *(poPos++) = '\r'; *(poPos++) = '\n'; }
}
// encode last bytes
switch (iSize % 3)
{
case 0: // nothign left
break; // no padding
case 1: // one byte left
{
unsigned char c = *pPos++;
// char 1
*(poPos++) = Base64Tbl[ (c >> 2)];
// char 2
*(poPos++) = Base64Tbl[((c & 0x3) << 4) ];
// char 3
*(poPos++) = Base64Pad;
// char 4
*(poPos++) = Base64Pad;
}
break;
case 2: // two bytes left
{
unsigned char c1 = *pPos++, c2 = *pPos++;
// char 1
*(poPos++) = Base64Tbl[ (c1 >> 2)];
// char 2
*(poPos++) = Base64Tbl[((c1 & 0x3) << 4) | (c2 >> 4)];
// char 3
*(poPos++) = Base64Tbl[((c2 & 0xf) << 2) ];
// char 4
*(poPos++) = Base64Pad;
}
break;
}
// append zero
*(poPos++) = '\0';
// check size
if (poPos - poData != ioSize) { delete [] poData; return NULL; }
// return data
return poData;
}
const char x = '\x01';
inline unsigned char B64DecodeChar(const unsigned char c)
{
return( c == Base64Pad ? 0 :
c & 128 ? 0xff :
Base64RTbl[c] );
}
char *B64Decode(const char *pData, int &ioSize)
{
// first: count the characters
const char *pPos; int iCount = 0;
for (pPos = pData; *pPos; pPos++)
if (B64DecodeChar(*pPos) != 0xff)
iCount++;
// if(iCount % 4) return NULL;
// alloc output buffer
char *poData = new char [ioSize = (iCount / 4) * 3];
// begin decode
pPos = pData; char *poPos = poData;
for (int i = 0; i < iCount / 4; i++)
{
// read & decode 4 bytes
unsigned char c[4];
for (; *pPos;) if ((c[0] = B64DecodeChar(*(pPos++))) != 0xff) break; if (!*pPos) c[0] = 0;
for (; *pPos;) if ((c[1] = B64DecodeChar(*(pPos++))) != 0xff) break; if (!*pPos) c[1] = 0;
for (; *pPos;) if ((c[2] = B64DecodeChar(*(pPos++))) != 0xff) break; if (!*pPos) c[2] = 0;
for (; *pPos;) if ((c[3] = B64DecodeChar(*(pPos++))) != 0xff) break; if (!*pPos) c[3] = 0;
// write 3 bytes
*(poPos++) = (c[0] << 2) | (c[1] >> 4);
*(poPos++) = (c[1] << 4) | (c[2] >> 2);
*(poPos++) = (c[2] << 6) | c[3] ;
}
// truncate length
if (*(--pPos) == Base64Pad) ioSize--;
if (*(--pPos) == Base64Pad) ioSize--;
// ok
return poData;
}

View File

@ -1,22 +0,0 @@
/*
* OpenClonk, http://www.openclonk.org
*
* Copyright (c) 2003 Peter Wortmann
* Copyright (c) 2001-2009, RedWolf Design GmbH, http://www.clonk.de
*
* Portions might be copyrighted by other authors who have contributed
* to OpenClonk.
*
* Permission to use, copy, modify, and/or distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
* See isc_license.txt for full license and disclaimer.
*
* "Clonk" is a registered trademark of Matthes Bender.
* See clonk_trademark_license.txt for full license.
*/
/* Base64 encoding / decoding */
char *B64Encode(const void *pData, int iSize);
char *B64Decode(const char *pData, int &ioSize);