summaryrefslogtreecommitdiffstats
path: root/compat/memcmp.c
diff options
context:
space:
mode:
authordkf <donal.k.fellows@manchester.ac.uk>2007-01-22 09:15:50 (GMT)
committerdkf <donal.k.fellows@manchester.ac.uk>2007-01-22 09:15:50 (GMT)
commitcbf7cd3db2f7e8c8951c2bbb101a52a264fc9f75 (patch)
tree1ed33dbdc04db399d15477819412a5cfdc8f05b1 /compat/memcmp.c
parentb1e9c1d4b650fea5e60a10b7beaad0c893848982 (diff)
downloadtcl-cbf7cd3db2f7e8c8951c2bbb101a52a264fc9f75.zip
tcl-cbf7cd3db2f7e8c8951c2bbb101a52a264fc9f75.tar.gz
tcl-cbf7cd3db2f7e8c8951c2bbb101a52a264fc9f75.tar.bz2
Fix [Bug 1631017]
Diffstat (limited to 'compat/memcmp.c')
-rw-r--r--compat/memcmp.c50
1 files changed, 28 insertions, 22 deletions
diff --git a/compat/memcmp.c b/compat/memcmp.c
index 68e18c5..43202a5 100644
--- a/compat/memcmp.c
+++ b/compat/memcmp.c
@@ -1,25 +1,23 @@
-/*
+/*
* memcmp.c --
*
* Source code for the "memcmp" library routine.
*
* Copyright (c) 1998 Sun Microsystems, Inc.
*
- * See the file "license.terms" for information on usage and redistribution
- * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * See the file "license.terms" for information on usage and redistribution of
+ * this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * SCCS: @(#) memcmp.c 1.2 98/01/19 10:48:58
+ * RCS: @(#) $Id: memcmp.c,v 1.4 2007/01/22 09:15:50 dkf Exp $
*/
#include "tclPort.h"
/*
- * Here is the prototype just in case it is not included
- * in tclPort.h.
+ * Here is the prototype just in case it is not included in tclPort.h.
*/
-int memcmp _ANSI_ARGS_((CONST VOID *s1,
- CONST VOID *s2, size_t n));
+int memcmp(CONST VOID *s1, CONST VOID *s2, size_t n);
/*
*----------------------------------------------------------------------
@@ -29,11 +27,10 @@ int memcmp _ANSI_ARGS_((CONST VOID *s1,
* Compares two bytes sequences.
*
* Results:
- * compares its arguments, looking at the first n
- * bytes (each interpreted as an unsigned char), and returns
- * an integer less than, equal to, or greater than 0, accord-
- * ing as s1 is less than, equal to, or
- * greater than s2 when taken to be unsigned 8 bit numbers.
+ * Compares its arguments, looking at the first n bytes (each interpreted
+ * as an unsigned char), and returns an integer less than, equal to, or
+ * greater than 0, according as s1 is less than, equal to, or greater
+ * than s2 when taken to be unsigned 8 bit numbers.
*
* Side effects:
* None.
@@ -42,19 +39,28 @@ int memcmp _ANSI_ARGS_((CONST VOID *s1,
*/
int
-memcmp(s1, s2, n)
- CONST VOID *s1; /* First string. */
- CONST VOID *s2; /* Second string. */
- size_t n; /* Length to compare. */
+memcmp(
+ CONST VOID *s1, /* First string. */
+ CONST VOID *s2, /* Second string. */
+ size_t n) /* Length to compare. */
{
- unsigned char u1, u2;
+ CONST unsigned char *ptr1 = (CONST unsigned char *) s1;
+ CONST unsigned char *ptr2 = (CONST unsigned char *) s2;
+
+ for ( ; n-- ; ptr1++, ptr2++) {
+ unsigned char u1 = *ptr1, u2 = *ptr2;
- for ( ; n-- ; s1++, s2++) {
- u1 = * (unsigned char *) s1;
- u2 = * (unsigned char *) s2;
- if ( u1 != u2) {
+ if (u1 != u2) {
return (u1-u2);
}
}
return 0;
}
+
+/*
+ * Local Variables:
+ * mode: c
+ * c-basic-offset: 4
+ * fill-column: 78
+ * End:
+ */