shithub: choc

Download patch

ref: c2af7bb926e4f7026347739e4a5a58a3bac51d0f
parent: b7906ef4baad9f3a2a7e1b32a9d739e29e001f79
author: Simon Howard <[email protected]>
date: Thu Mar 15 14:38:55 EDT 2007

Use SDL for endianness byte swapping. m_swap.c removed; m_swap.h renamed
to i_swap.h.

Subversion-branch: /trunk/chocolate-doom
Subversion-revision: 857

--- a/configure.in
+++ b/configure.in
@@ -60,8 +60,6 @@
 
 AC_SUBST(ac_aux_dir)
 
-AC_C_BIGENDIAN
-
 dnl Shut up the datarootdir warnings.
 AC_DEFUN([AC_DATAROOTDIR_CHECKED])
 
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -64,6 +64,7 @@
 i_scale.c            i_scale.h             \
 i_pcsound.c          i_pcsound.h           \
 i_sound.c            i_sound.h             \
+                     i_swap.h              \
 i_system.c           i_system.h            \
 i_timer.c            i_timer.h             \
 i_video.c            i_video.h             \
@@ -77,7 +78,6 @@
 memio.c              memio.h               \
 mus2mid.c            mus2mid.h             \
 m_random.c           m_random.h            \
-m_swap.c             m_swap.h              \
 net_client.c         net_client.h          \
 net_common.c         net_common.h          \
 net_dedicated.c      net_dedicated.h       \
--- a/src/f_finale.c
+++ b/src/f_finale.c
@@ -31,7 +31,7 @@
 // Functions.
 #include "deh_main.h"
 #include "i_system.h"
-#include "m_swap.h"
+#include "i_swap.h"
 #include "z_zone.h"
 #include "v_video.h"
 #include "w_wad.h"
--- a/src/hu_lib.c
+++ b/src/hu_lib.c
@@ -29,7 +29,7 @@
 #include "doomdef.h"
 
 #include "v_video.h"
-#include "m_swap.h"
+#include "i_swap.h"
 
 #include "hu_lib.h"
 #include "r_local.h"
--- a/src/hu_stuff.c
+++ b/src/hu_stuff.c
@@ -31,7 +31,7 @@
 #include "z_zone.h"
 
 #include "deh_main.h"
-#include "m_swap.h"
+#include "i_swap.h"
 
 #include "hu_stuff.h"
 #include "hu_lib.h"
--- a/src/i_sound.c
+++ b/src/i_sound.c
@@ -41,10 +41,10 @@
 #include "i_system.h"
 #include "i_pcsound.h"
 #include "i_sound.h"
+#include "i_swap.h"
 #include "deh_main.h"
 #include "m_argv.h"
 #include "m_misc.h"
-#include "m_swap.h"
 #include "w_wad.h"
 
 #include "doomdef.h"
--- /dev/null
+++ b/src/i_swap.h
@@ -1,0 +1,50 @@
+// Emacs style mode select   -*- C++ -*- 
+//-----------------------------------------------------------------------------
+//
+// Copyright(C) 1993-1996 Id Software, Inc.
+// Copyright(C) 2005,2006,2007 Simon Howard
+//
+// 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 the Free Software Foundation; either version 2
+// of the License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+// 02111-1307, USA.
+//
+// DESCRIPTION:
+//	Endianess handling, swapping 16bit and 32bit.
+//
+//-----------------------------------------------------------------------------
+
+
+#ifndef __I_SWAP__
+#define __I_SWAP__
+
+#include "SDL_endian.h"
+
+// Endianess handling.
+// WAD files are stored little endian.
+
+// Just use SDL's endianness swapping functions.
+
+#define SHORT(x)  SDL_SwapLE16(x)
+#define LONG(x)   SDL_SwapLE32(x)
+
+// Defines for checking the endianness of the system.
+
+#if SDL_BYTEORDER == SYS_LIL_ENDIAN
+#define SYS_LITTLE_ENDIAN
+#elif SDL_BYTEORDER == SYS_BIG_ENDIAN
+#define SYS_BIG_ENDIAN
+#endif
+
+#endif
+
--- a/src/i_video.c
+++ b/src/i_video.c
@@ -39,9 +39,9 @@
 #include "d_main.h"
 #include "i_scale.h"
 #include "i_system.h"
+#include "i_swap.h"
 #include "i_timer.h"
 #include "m_argv.h"
-#include "m_swap.h"
 #include "s_sound.h"
 #include "sounds.h"
 #include "v_video.h"
--- a/src/m_menu.c
+++ b/src/m_menu.c
@@ -36,6 +36,7 @@
 #include "d_main.h"
 #include "deh_main.h"
 
+#include "i_swap.h"
 #include "i_system.h"
 #include "i_timer.h"
 #include "i_video.h"
@@ -51,7 +52,6 @@
 #include "g_game.h"
 
 #include "m_argv.h"
-#include "m_swap.h"
 #include "p_saveg.h"
 
 #include "s_sound.h"
--- a/src/m_misc.c
+++ b/src/m_misc.c
@@ -49,12 +49,12 @@
 #include "z_zone.h"
 
 #include "m_menu.h"
-#include "m_swap.h"
 #include "m_argv.h"
 #include "net_client.h"
 
 #include "w_wad.h"
 
+#include "i_swap.h"
 #include "i_system.h"
 #include "i_video.h"
 #include "v_video.h"
--- a/src/m_swap.c
+++ /dev/null
@@ -1,54 +1,0 @@
-// Emacs style mode select   -*- C++ -*- 
-//-----------------------------------------------------------------------------
-//
-// Copyright(C) 1993-1996 Id Software, Inc.
-// Copyright(C) 2005 Simon Howard
-//
-// 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 the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
-// 02111-1307, USA.
-//
-// DESCRIPTION:
-//	Endianess handling, swapping 16bit and 32bit.
-//
-//-----------------------------------------------------------------------------
-
-
-
-#include "m_swap.h"
-
-
-#ifdef WORDS_BIGENDIAN
-
-// Swap 16bit, that is, MSB and LSB byte.
-unsigned short SwapSHORT(unsigned short x)
-{
-    // No masking with 0xFF should be necessary. 
-    return (x>>8) | (x<<8);
-}
-
-// Swapping 32bit.
-unsigned int SwapLONG( unsigned int x)
-{
-    return
-	(x>>24)
-	| ((x>>8) & 0xff00)
-	| ((x<<8) & 0xff0000)
-	| (x<<24);
-}
-
-
-#endif
-
-
--- a/src/m_swap.h
+++ /dev/null
@@ -1,50 +1,0 @@
-// Emacs style mode select   -*- C++ -*- 
-//-----------------------------------------------------------------------------
-//
-// Copyright(C) 1993-1996 Id Software, Inc.
-// Copyright(C) 2005 Simon Howard
-//
-// 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 the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
-// 02111-1307, USA.
-//
-// DESCRIPTION:
-//	Endianess handling, swapping 16bit and 32bit.
-//
-//-----------------------------------------------------------------------------
-
-
-#ifndef __M_SWAP__
-#define __M_SWAP__
-
-
-#include "config.h"
-
-
-// Endianess handling.
-// WAD files are stored little endian.
-#ifdef WORDS_BIGENDIAN
-extern unsigned short	SwapSHORT(unsigned short);
-extern unsigned int	SwapLONG(unsigned int);
-#define SHORT(x)	((short)SwapSHORT((unsigned short) (x)))
-#define LONG(x)         ((int)SwapLONG((unsigned int) (x)))
-#else
-#define SHORT(x)	(x)
-#define LONG(x)         (x)
-#endif
-
-
-
-
-#endif
--- a/src/md5.c
+++ b/src/md5.c
@@ -19,16 +19,23 @@
  *  - Ian Jackson <[email protected]>.
  * Still in the public domain.
  */
-#include "config.h"
 
+#include "i_swap.h"
+
 #include <string.h>             /* for memcpy() */
 #include <sys/types.h>          /* for stupid systems */
 
 #include "md5.h"
 
-#ifdef WORDS_BIGENDIAN
-void
-byteSwap(UWORD32 *buf, unsigned words)
+#ifdef SYS_LITTLE_ENDIAN
+
+// Little endian system - no byte swapping required
+
+#define ByteSwapBlock(x)
+
+#else
+
+void ByteSwapBlock(UWORD32 *buf, unsigned words)
 {
         md5byte *p = (md5byte *)buf;
 
@@ -38,10 +45,9 @@
                 p += 4;
         } while (--words);
 }
-#else
-#define byteSwap(buf,words)
-#endif
 
+#endif /* #ifndef SYS_LITTLE_ENDIAN */
+
 /*
  * Start MD5 accumulation.  Set bit count to 0 and buffer to mysterious
  * initialization constants.
@@ -80,7 +86,7 @@
         }
         /* First chunk is an odd size */
         memcpy((md5byte *)ctx->in + 64 - t, buf, t);
-        byteSwap(ctx->in, 16);
+        ByteSwapBlock(ctx->in, 16);
         MD5_Transform(ctx->buf, ctx->in);
         buf += t;
         len -= t;
@@ -88,7 +94,7 @@
         /* Process data in 64-byte chunks */
         while (len >= 64) {
                 memcpy(ctx->in, buf, 64);
-                byteSwap(ctx->in, 16);
+                ByteSwapBlock(ctx->in, 16);
                 MD5_Transform(ctx->buf, ctx->in);
                 buf += 64;
                 len -= 64;
@@ -133,13 +139,13 @@
 
         if (count < 0) {        /* Padding forces an extra block */
                 memset(p, 0, count + 8);
-                byteSwap(ctx->in, 16);
+                ByteSwapBlock(ctx->in, 16);
                 MD5_Transform(ctx->buf, ctx->in);
                 p = (md5byte *)ctx->in;
                 count = 56;
         }
         memset(p, 0, count);
-        byteSwap(ctx->in, 14);
+        ByteSwapBlock(ctx->in, 14);
 
         /* Append length in bits and transform */
         ctx->in[14] = ctx->bytes[0] << 3;
@@ -146,7 +152,7 @@
         ctx->in[15] = ctx->bytes[1] << 3 | ctx->bytes[0] >> 29;
         MD5_Transform(ctx->buf, ctx->in);
 
-        byteSwap(ctx->buf, 4);
+        ByteSwapBlock(ctx->buf, 4);
         memcpy(digest, ctx->buf, 16);
         memset(ctx, 0, sizeof(ctx));    /* In case it's sensitive */
 }
@@ -255,3 +261,4 @@
 }
 
 #endif
+
--- a/src/mus2mid.c
+++ b/src/mus2mid.c
@@ -26,7 +26,7 @@
 #include <stdio.h>
 
 #include "doomtype.h"
-#include "m_swap.h"
+#include "i_swap.h"
 
 #include "memio.h"
 #include "mus2mid.h"
--- a/src/p_setup.c
+++ b/src/p_setup.c
@@ -32,7 +32,7 @@
 #include "z_zone.h"
 
 #include "deh_main.h"
-#include "m_swap.h"
+#include "i_swap.h"
 #include "m_bbox.h"
 
 #include "g_game.h"
--- a/src/r_data.c
+++ b/src/r_data.c
@@ -28,10 +28,10 @@
 
 
 #include "deh_main.h"
+#include "i_swap.h"
 #include "i_system.h"
 #include "z_zone.h"
 
-#include "m_swap.h"
 
 #include "w_wad.h"
 
--- a/src/r_things.c
+++ b/src/r_things.c
@@ -33,8 +33,8 @@
 
 #include "deh_main.h"
 #include "doomdef.h"
-#include "m_swap.h"
 
+#include "i_swap.h"
 #include "i_system.h"
 #include "z_zone.h"
 #include "w_wad.h"
--- a/src/st_lib.c
+++ b/src/st_lib.c
@@ -34,8 +34,7 @@
 #include "z_zone.h"
 #include "v_video.h"
 
-#include "m_swap.h"
-
+#include "i_swap.h"
 #include "i_system.h"
 
 #include "w_wad.h"
--- a/src/v_video.c
+++ b/src/v_video.c
@@ -36,7 +36,7 @@
 #include "doomdata.h"
 
 #include "m_bbox.h"
-#include "m_swap.h"
+#include "i_swap.h"
 
 #include "v_video.h"
 
--- a/src/w_wad.c
+++ b/src/w_wad.c
@@ -33,7 +33,7 @@
 #include <string.h>
 
 #include "doomtype.h"
-#include "m_swap.h"
+#include "i_swap.h"
 #include "i_system.h"
 #include "i_video.h"
 #include "z_zone.h"
--- a/src/wi_stuff.c
+++ b/src/wi_stuff.c
@@ -30,9 +30,9 @@
 #include "z_zone.h"
 
 #include "m_random.h"
-#include "m_swap.h"
 
 #include "deh_main.h"
+#include "i_swap.h"
 #include "i_system.h"
 
 #include "w_wad.h"