Line data Source code
1 : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 : /* This Source Code Form is subject to the terms of the Mozilla Public
3 : * License, v. 2.0. If a copy of the MPL was not distributed with this
4 : * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
5 :
6 : #include "plstr.h"
7 : #include <string.h>
8 :
9 : PR_IMPLEMENT(char *)
10 : PL_strchr(const char *s, char c)
11 : {
12 297 : if( (const char *)0 == s ) return (char *)0;
13 :
14 297 : return strchr(s, c);
15 : }
16 :
17 : PR_IMPLEMENT(char *)
18 : PL_strrchr(const char *s, char c)
19 : {
20 0 : if( (const char *)0 == s ) return (char *)0;
21 :
22 0 : return strrchr(s, c);
23 : }
24 :
25 : PR_IMPLEMENT(char *)
26 : PL_strnchr(const char *s, char c, PRUint32 n)
27 : {
28 0 : if( (const char *)0 == s ) return (char *)0;
29 :
30 0 : for( ; n && *s; s++, n-- )
31 0 : if( *s == c )
32 0 : return (char *)s;
33 :
34 0 : if( ((char)0 == c) && (n > 0) && ((char)0 == *s) ) return (char *)s;
35 :
36 0 : return (char *)0;
37 : }
38 :
39 : PR_IMPLEMENT(char *)
40 : PL_strnrchr(const char *s, char c, PRUint32 n)
41 : {
42 : const char *p;
43 :
44 0 : if( (const char *)0 == s ) return (char *)0;
45 :
46 0 : for( p = s; n && *p; p++, n-- )
47 : ;
48 :
49 0 : if( ((char)0 == c) && (n > 0) && ((char)0 == *p) ) return (char *)p;
50 :
51 0 : for( p--; p >= s; p-- )
52 0 : if( *p == c )
53 0 : return (char *)p;
54 :
55 0 : return (char *)0;
56 : }
|