1/*
2 * memcmp.c --
3 *
4 *	Source code for the "memcmp" library routine.
5 *
6 * Copyright (c) 1998 Sun Microsystems, Inc.
7 *
8 * See the file "license.terms" for information on usage and redistribution
9 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
10 *
11 * SCCS: @(#) memcmp.c 1.2 98/01/19 10:48:58
12 */
13
14#include "tcl.h"
15#include "tclPort.h"
16
17/*
18 * Here is the prototype just in case it is not included
19 * in tclPort.h.
20 */
21
22int		memcmp _ANSI_ARGS_((CONST VOID *s1,
23			    CONST VOID *s2, size_t n));
24
25/*
26 *----------------------------------------------------------------------
27 *
28 * memcmp --
29 *
30 *	Compares two bytes sequences.
31 *
32 * Results:
33 *     compares  its  arguments, looking at the first n
34 *     bytes (each interpreted as an unsigned char), and  returns
35 *     an integer less than, equal to, or greater than 0, accord-
36 *     ing as s1 is less  than,  equal  to,  or
37 *     greater than s2 when taken to be unsigned 8 bit numbers.
38 *
39 * Side effects:
40 *	None.
41 *
42 *----------------------------------------------------------------------
43 */
44
45int
46memcmp(s1, s2, n)
47    CONST VOID *s1;			/* First string. */
48    CONST VOID *s2;			/* Second string. */
49    size_t      n;                      /* Length to compare. */
50{
51    CONST unsigned char *ptr1 = (CONST unsigned char *) s1;
52    CONST unsigned char *ptr2 = (CONST unsigned char *) s2;
53
54    for ( ; n-- ; ptr1++, ptr2++) {
55	unsigned char u1 = *ptr1, u2 = *ptr2;
56
57	if ( u1 != u2) {
58	    return (u1-u2);
59	}
60    }
61    return 0;
62}
63