summaryrefslogtreecommitdiff
path: root/beecrypt/endianness.c
diff options
context:
space:
mode:
Diffstat (limited to 'beecrypt/endianness.c')
-rw-r--r--beecrypt/endianness.c422
1 files changed, 8 insertions, 414 deletions
diff --git a/beecrypt/endianness.c b/beecrypt/endianness.c
index c280fc64b..85a5654c5 100644
--- a/beecrypt/endianness.c
+++ b/beecrypt/endianness.c
@@ -57,419 +57,13 @@ uint32_t swapu32(uint32_t n)
int64_t swap64(int64_t n)
{
- #if HAVE_LONG_LONG
- return ( ((n & 0xffLL) << 56) |
- ((n & 0xff00LL) << 40) |
- ((n & 0xff0000LL) << 24) |
- ((n & 0xff000000LL) << 8) |
- ((n & 0xff00000000LL) >> 8) |
- ((n & 0xff0000000000LL) >> 24) |
- ((n & 0xff000000000000LL) >> 40) |
- ((n & 0xff00000000000000LL) >> 56) );
- #else
- return ( ((n & 0xffL) << 56) |
- ((n & 0xff00L) << 40) |
- ((n & 0xff0000L) << 24) |
- ((n & 0xff000000L) << 8) |
- ((n & 0xff00000000L) >> 8) |
- ((n & 0xff0000000000L) >> 24) |
- ((n & 0xff000000000000L) >> 40) |
- ((n & 0xff00000000000000L) >> 56) );
- #endif
+ return ( ((n & ((int64_t) 0xff) ) << 56) |
+ ((n & ((int64_t) 0xff) << 8) << 40) |
+ ((n & ((int64_t) 0xff) << 16) << 24) |
+ ((n & ((int64_t) 0xff) << 24) << 8) |
+ ((n & ((int64_t) 0xff) << 32) >> 8) |
+ ((n & ((int64_t) 0xff) << 40) >> 24) |
+ ((n & ((int64_t) 0xff) << 48) >> 40) |
+ ((n & ((int64_t) 0xff) << 56) >> 56) );
}
/*@=bitwisesigned =shiftimplementation@*/
-
-int encodeByte(javabyte b, byte *data)
-{
- *data = b;
- return 1;
-}
-
-int encodeShort(javashort s, byte *data)
-{
- #if (!WORDS_BIGENDIAN)
- s = swap16(s);
- #endif
- memcpy(data, &s, 2);
- return 2;
-}
-
-int encodeInt(javaint i, byte* data)
-{
- #if (!WORDS_BIGENDIAN)
- i = swap32(i);
- #endif
- memcpy(data, &i, 4);
- return 4;
-}
-
-int encodeLong(javalong l, byte* data)
-{
- #if (!WORDS_BIGENDIAN)
- l = swap64(l);
- #endif
- memcpy(data, &l, 8);
- return 8;
-}
-
-int encodeChar(javachar c, byte* data)
-{
- #if (!WORDS_BIGENDIAN)
- c = swapu16(c);
- #endif
- memcpy(data, &c, 2);
- return 2;
-}
-
-int encodeInts(const javaint* i, byte* data, int count)
-{
- register int rc = ((uint32_t)count) << 2;
- #if (WORDS_BIGENDIAN)
- memcpy(data, i, rc);
- #else
- javaint tmp;
- while (count--)
- {
- tmp = swap32(*(i++));
- memcpy(data, &tmp, 4);
- data += 4;
- }
- #endif
- return rc;
-}
-
-int encodeIntsPartial(const javaint* i, byte* data, int bytecount)
-{
- register int rc = bytecount;
- #if (WORDS_BIGENDIAN)
- memcpy(data, i, rc);
- #else
- javaint tmp;
-
- while (bytecount > 0)
- {
- tmp = swap32(*(i++));
- memcpy(data, &tmp, (bytecount > 4) ? 4 : bytecount);
- data += 4;
- bytecount -= 4;
- }
- #endif
- return rc;
-}
-
-int encodeIntsPartialPad(const javaint* i, byte* data, int bytecount, byte padvalue)
-{
- register int rc = bytecount;
-
- #if (WORDS_BIGENDIAN)
- memcpy(data, i, rc);
- if (rc & 0x3)
- memset(data+rc, padvalue, 4 -(rc & 0x3));
- #else
- javaint tmp;
-
- while (bytecount > 0)
- {
- tmp = swap32(*(i++));
- memcpy(data, &tmp, (bytecount > 4) ? 4 : bytecount);
- data += 4;
- bytecount -= 4;
- }
- if (bytecount)
- memset(data+bytecount, padvalue, -bytecount);
- #endif
- return rc;
-}
-
-int encodeChars(const javachar* c, byte* data, int count)
-{
- register int rc = ((uint32_t)count) << 1;
- #if (WORDS_BIGENDIAN)
- memcpy(data, c, rc);
- #else
- javaint tmp;
- while (count--)
- {
- tmp = swapu16(*(c++));
- memcpy(data, &tmp, 2);
- data += 2;
- }
- #endif
- return rc;
-}
-
-int decodeByte(javabyte* b, const byte* data)
-{
- *b = *data;
- return 1;
-}
-
-int decodeShort(javashort* s, const byte* data)
-{
- #if (WORDS_BIGENDIAN)
- memcpy(s, data, 2);
- #else
- javashort tmp;
- memcpy(&tmp, data, 2);
- *s = swap16(tmp);
- #endif
- return 2;
-}
-
-int decodeInt(javaint* i, const byte* data)
-{
- #if (WORDS_BIGENDIAN)
- memcpy(i, data, 4);
- #else
- javaint tmp;
- memcpy(&tmp, data, 4);
- *i = swap32(tmp);
- #endif
- return 4;
-}
-
-int decodeLong(javalong* l, const byte* data)
-{
- #if (WORDS_BIGENDIAN)
- memcpy(l, data, 8);
- #else
- javalong tmp;
- memcpy(&tmp, data, 8);
- *l = swap64(tmp);
- #endif
- return 8;
-}
-
-int decodeChar(javachar* c, const byte* data)
-{
- #if (WORDS_BIGENDIAN)
- memcpy(c, data, 2);
- #else
- javachar tmp;
- memcpy(&tmp, data, 2);
- *c = swapu16(tmp);
- #endif
- return 2;
-}
-
-int decodeInts(javaint* i, const byte* data, int count)
-{
- register int rc = ((uint32_t)count) << 2;
- #if (WORDS_BIGENDIAN)
- memcpy(i, data, rc);
- #else
- javaint tmp;
- while (count--)
- {
- memcpy(&tmp, data, 4);
- *(i++) = swap32(tmp);
- data += 4;
- }
- #endif
- return rc;
-}
-
-int decodeIntsPartial(javaint* i, const byte* data, int bytecount)
-{
- register int rc = bytecount;
- #if (WORDS_BIGENDIAN)
- memcpy(i, data, rc);
- if (rc & 0x3)
- memset(((byte*) i) + rc, 0, 4 - (rc & 0x3));
- #else
- javaint tmp;
- while (bytecount >= 4)
- {
- memcpy(&tmp, data, 4);
- *(i++) = swap32(tmp);
- data += 4;
- bytecount -= 4;
- }
- if (bytecount)
- {
- tmp = 0;
- memcpy(&tmp, data, bytecount);
- *(i++) = swap32(tmp);
- }
- #endif
- return rc;
-}
-
-int decodeChars(javachar* c, const byte* data, int count)
-{
- register int rc = ((uint32_t)count) << 1;
- #if (WORDS_BIGENDIAN)
- memcpy(c, data, rc);
- #else
- javachar tmp;
- while (count--)
- {
- memcpy(&tmp, data, 2);
- *(c++) = swapu16(tmp);
- data += 2;
- }
- #endif
- return rc;
-}
-
-int readByte(javabyte* b, FILE* ifp)
-{
- return fread(b, 1, 1, ifp);
-}
-
-int readShort(javashort* s, FILE* ifp)
-{
- register int rc = fread(s, 2, 1, ifp);
- #if !(WORDS_BIGENDIAN)
- if (rc == 1)
- {
- register javashort tmp = *s;
- *s = swap16(tmp);
- }
- #endif
- return rc;
-}
-
-int readInt(javaint* i, FILE* ifp)
-{
- register int rc = fread(i, 4, 1, ifp);
- #if !(WORDS_BIGENDIAN)
- if (rc == 1)
- {
- register javaint tmp = *i;
- *i = swap32(tmp);
- }
- #endif
- return rc;
-}
-
-int readLong(javalong* l, FILE* ifp)
-{
- register int rc = fread(l, 8, 1, ifp);
- #if !(WORDS_BIGENDIAN)
- if (rc == 1)
- {
- register javalong tmp = *l;
- *l = swap64(tmp);
- }
- #endif
- return rc;
-}
-
-int readChar(javachar* c, FILE* ifp)
-{
- register int rc = fread(c, 2, 1, ifp);
- #if !(WORDS_BIGENDIAN)
- if (rc == 1)
- {
- register javachar tmp = *c;
- *c = swapu16(tmp);
- }
- #endif
- return rc;
-}
-
-int readInts(javaint* i, FILE* ifp, int count)
-{
- register int rc = fread(i, 4, count, ifp);
- #if !(WORDS_BIGENDIAN)
- if (rc == count)
- {
- while (count > 0)
- {
- register javaint tmp = *i;
- *(i++) = swap32(tmp);
- count--;
- }
- }
- #endif
- return rc;
-}
-
-int readChars(javachar* c, FILE* ifp, int count)
-{
- register int rc = fread(c, 2, count, ifp);
- #if !(WORDS_BIGENDIAN)
- if (rc == count)
- {
- while (count > 0)
- {
- register javachar tmp = *c;
- *(c++) = swap16(tmp);
- count--;
- }
- }
- #endif
- return rc;
-}
-
-int writeByte(javabyte b, FILE* ofp)
-{
- return fwrite(&b, 1, 1, ofp);
-}
-
-int writeShort(javashort s, FILE* ofp)
-{
- #if !(WORDS_BIGENDIAN)
- s = swap16(s);
- #endif
- return fwrite(&s, 2, 1, ofp);
-}
-
-int writeInt(javaint i, FILE* ofp)
-{
- #if !(WORDS_BIGENDIAN)
- i = swap32(i);
- #endif
- return fwrite(&i, 4, 1, ofp);
-}
-
-int writeLong(javalong l, FILE* ofp)
-{
- #if !(WORDS_BIGENDIAN)
- l = swap64(l);
- #endif
- return fwrite(&l, 8, 1, ofp);
-}
-
-int writeChar(javachar c, FILE* ofp)
-{
- #if !(WORDS_BIGENDIAN)
- c = swap16(c);
- #endif
- return fwrite(&c, 2, 1, ofp);
-}
-
-int writeInts(const javaint* i, FILE* ofp, int count)
-{
- #if WORDS_BIGENDIAN
- return fwrite(i, 4, count, ofp);
- #else
- register int total = 0;
- while (count-- > 0)
- {
- register int rc = writeInt(*(i++), ofp);
- if (rc < 0)
- break;
- total += rc;
- }
- return total;
- #endif
-}
-
-int writeChars(const javachar* c, FILE* ofp, int count)
-{
- #if WORDS_BIGENDIAN
- return fwrite(c, 2, count, ofp);
- #else
- register int total = 0;
- while (count-- > 0)
- {
- register int rc = writeChar(*(c++), ofp);
- if (rc < 0)
- break;
- total += rc;
- }
- return total;
- #endif
-}