This commit was generated by cvs2svn to track changes on a CVS vendor
[external/binutils.git] / libiberty / memchr.c
1 /*
2 FUNCTION
3         <<memchr>>---find character in memory
4
5 INDEX
6         memchr
7
8 ANSI_SYNOPSIS
9         #include <string.h>
10         void *memchr(const void *<[src]>, int <[c]>, size_t <[length]>);
11
12 TRAD_SYNOPSIS
13         #include <string.h>
14         void *memchr(<[src]>, <[c]>, <[length]>)
15         void *<[src]>;
16         void *<[c]>;
17         size_t <[length]>;
18
19 DESCRIPTION
20         This function searches memory starting at <<*<[src]>>> for the
21         character <[c]>.  The search only ends with the first
22         occurrence of <[c]>, or after <[length]> characters; in
23         particular, <<NULL>> does not terminate the search.
24
25 RETURNS
26         If the character <[c]> is found within <[length]> characters
27         of <<*<[src]>>>, a pointer to the character is returned. If
28         <[c]> is not found, then <<NULL>> is returned.  
29
30 PORTABILITY
31 <<memchr>>  requires no supporting OS subroutines.
32
33 QUICKREF
34         memchr ansi pure
35
36 */
37
38 #include <ansidecl.h>
39 #ifdef __STDC__
40 #include <stddef.h>
41 #else
42 #define size_t unsigned long
43 #endif
44
45 PTR
46 memchr (src_void, c, length)
47      register const PTR src_void;
48      int c;
49      size_t length;
50 {
51   const unsigned char *src = (const unsigned char *)src_void;
52   
53   while (--length >= 0)
54   {
55     if (*src == c)
56      return (PTR)src;
57     src++;
58   }
59   return NULL;
60 }