~linaro-toolchain-dev/cortex-strings/trunk

« back to all changes in this revision

Viewing changes to reference/glibc-c/strcmp.c

  • Committer: Michael Hope
  • Date: 2012-06-12 03:19:48 UTC
  • Revision ID: michael.hope@linaro.org-20120612031948-4ii8jicywtzjprak
Added the C only routines from GLIBC 2.16+20120607~git24a6dbe

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/* Copyright (C) 1991, 1996, 1997, 2003 Free Software Foundation, Inc.
 
2
   This file is part of the GNU C Library.
 
3
 
 
4
   The GNU C Library is free software; you can redistribute it and/or
 
5
   modify it under the terms of the GNU Lesser General Public
 
6
   License as published by the Free Software Foundation; either
 
7
   version 2.1 of the License, or (at your option) any later version.
 
8
 
 
9
   The GNU C Library is distributed in the hope that it will be useful,
 
10
   but WITHOUT ANY WARRANTY; without even the implied warranty of
 
11
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 
12
   Lesser General Public License for more details.
 
13
 
 
14
   You should have received a copy of the GNU Lesser General Public
 
15
   License along with the GNU C Library; if not, see
 
16
   <http://www.gnu.org/licenses/>.  */
 
17
 
 
18
#include <string.h>
 
19
#include "memcopy.h"
 
20
 
 
21
#undef strcmp
 
22
 
 
23
/* Compare S1 and S2, returning less than, equal to or
 
24
   greater than zero if S1 is lexicographically less than,
 
25
   equal to or greater than S2.  */
 
26
int
 
27
strcmp (p1, p2)
 
28
     const char *p1;
 
29
     const char *p2;
 
30
{
 
31
  register const unsigned char *s1 = (const unsigned char *) p1;
 
32
  register const unsigned char *s2 = (const unsigned char *) p2;
 
33
  unsigned char c1, c2;
 
34
 
 
35
  do
 
36
    {
 
37
      c1 = (unsigned char) *s1++;
 
38
      c2 = (unsigned char) *s2++;
 
39
      if (c1 == '\0')
 
40
        return c1 - c2;
 
41
    }
 
42
  while (c1 == c2);
 
43
 
 
44
  return c1 - c2;
 
45
}