fix typos in mathl
[gnulib.git] / lib / memcmp.c
index 6096651..78735f5 100644 (file)
@@ -1,72 +1,69 @@
-/* Copyright (C) 1991, 1993, 1995 Free Software Foundation, Inc.
+/* Copyright (C) 1991, 1993, 1995, 1997, 1998, 2003, 2006 Free Software
+   Foundation, Inc.
+
    Contributed by Torbjorn Granlund (tege@sics.se).
 
-NOTE: The canonical source of this file is maintained with the GNU C Library.
-Bugs can be reported to bug-glibc@prep.ai.mit.edu.
+   NOTE: The canonical source of this file is maintained with the GNU C Library.
+   Bugs can be reported to bug-glibc@prep.ai.mit.edu.
 
-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, or (at your option) any
-later version.
+   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 3 of the License, or 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.
+   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.  */
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
-#ifdef HAVE_CONFIG_H
-#include "config.h"
+#ifndef _LIBC
+# include <config.h>
 #endif
 
-#undef __ptr_t
-#if defined (__cplusplus) || (defined (__STDC__) && __STDC__)
-#define        __ptr_t void *
-#else /* Not C++ or ANSI C.  */
-#undef const
-#define        const
-#define        __ptr_t char *
-#endif /* C++ or ANSI C.  */
-
-#if defined (HAVE_STRING_H) || defined (_LIBC)
 #include <string.h>
-#endif
+
+#undef memcmp
 
 #ifdef _LIBC
 
-#include <memcopy.h>
+# include <memcopy.h>
+# include <endian.h>
+
+# if __BYTE_ORDER == __BIG_ENDIAN
+#  define WORDS_BIGENDIAN
+# endif
 
 #else  /* Not in the GNU C library.  */
 
-#include <sys/types.h>
+# include <sys/types.h>
 
 /* Type to use for aligned memory operations.
    This should normally be the biggest type supported by a single load
    and store.  Must be an unsigned type.  */
-#define        op_t    unsigned long int
-#define OPSIZ  (sizeof(op_t))
+# define op_t  unsigned long int
+# define OPSIZ (sizeof(op_t))
 
 /* Threshold value for when to enter the unrolled loops.  */
-#define        OP_T_THRES      16
+# define OP_T_THRES    16
 
 /* Type to use for unaligned operations.  */
 typedef unsigned char byte;
 
-#ifndef WORDS_BIGENDIAN
-#define MERGE(w0, sh_1, w1, sh_2) (((w0) >> (sh_1)) | ((w1) << (sh_2)))
-#else
-#define MERGE(w0, sh_1, w1, sh_2) (((w0) << (sh_1)) | ((w1) >> (sh_2)))
-#endif
+# ifndef WORDS_BIGENDIAN
+#  define MERGE(w0, sh_1, w1, sh_2) (((w0) >> (sh_1)) | ((w1) << (sh_2)))
+# else
+#  define MERGE(w0, sh_1, w1, sh_2) (((w0) << (sh_1)) | ((w1) >> (sh_2)))
+# endif
 
 #endif /* In the GNU C library.  */
 
 #ifdef WORDS_BIGENDIAN
-#define CMP_LT_OR_GT(a, b) ((a) > (b) ? 1 : -1)
+# define CMP_LT_OR_GT(a, b) ((a) > (b) ? 1 : -1)
 #else
-#define CMP_LT_OR_GT(a, b) memcmp_bytes ((a), (b))
+# define CMP_LT_OR_GT(a, b) memcmp_bytes ((a), (b))
 #endif
 
 /* BE VERY CAREFUL IF YOU CHANGE THIS CODE!  */
@@ -86,12 +83,12 @@ typedef unsigned char byte;
 /* memcmp_bytes -- Compare A and B bytewise in the byte order of the machine.
    A and B are known to be different.
    This is needed only on little-endian machines.  */
-#ifdef  __GNUC__
+
+# ifdef  __GNUC__
 __inline
-#endif
+# endif
 static int
-memcmp_bytes (a, b)
-     op_t a, b;
+memcmp_bytes (long unsigned int a, long unsigned int b)
 {
   long int srcp1 = (long int) &a;
   long int srcp2 = (long int) &b;
@@ -116,16 +113,14 @@ memcmp_bytes (a, b)
 __inline
 #endif
 static int
-memcmp_common_alignment (srcp1, srcp2, len)
-     long int srcp1;
-     long int srcp2;
-     size_t len;
+memcmp_common_alignment (long int srcp1, long int srcp2, size_t len)
 {
   op_t a0, a1;
   op_t b0, b1;
 
   switch (len % 4)
     {
+    default: /* Avoid warning about uninitialized local variables.  */
     case 2:
       a0 = ((op_t *) srcp1)[0];
       b0 = ((op_t *) srcp2)[0];
@@ -203,10 +198,7 @@ memcmp_common_alignment (srcp1, srcp2, len)
 __inline
 #endif
 static int
-memcmp_not_common_alignment (srcp1, srcp2, len)
-     long int srcp1;
-     long int srcp2;
-     size_t len;
+memcmp_not_common_alignment (long int srcp1, long int srcp2, size_t len)
 {
   op_t a0, a1, a2, a3;
   op_t b0, b1, b2, b3;
@@ -225,6 +217,7 @@ memcmp_not_common_alignment (srcp1, srcp2, len)
 
   switch (len % 4)
     {
+    default: /* Avoid warning about uninitialized local variables.  */
     case 2:
       a1 = ((op_t *) srcp1)[0];
       a2 = ((op_t *) srcp1)[1];
@@ -305,10 +298,7 @@ memcmp_not_common_alignment (srcp1, srcp2, len)
 }
 
 int
-memcmp (s1, s2, len)
-     const __ptr_t s1;
-     const __ptr_t s2;
-     size_t len;
+rpl_memcmp (const void *s1, const void *s2, size_t len)
 {
   op_t a0;
   op_t b0;
@@ -366,8 +356,6 @@ memcmp (s1, s2, len)
 }
 
 #ifdef weak_alias
-#undef bcmp
+# undef bcmp
 weak_alias (memcmp, bcmp)
 #endif
-
-