Mercurial > flash_v2
annotate packages/language/c/libc/string/current/src/bsdstring.cxx @ 197:51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
| author | jlarmour |
|---|---|
| date | Fri, 30 Nov 2001 13:09:25 +0000 |
| parents | |
| children | e0c0827131d1 |
| rev | line source |
|---|---|
|
197
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
1 //=========================================================================== |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
2 // |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
3 // bsdstring.cxx |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
4 // |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
5 // BSD string routines |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
6 // |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
7 //=========================================================================== |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
8 //####COPYRIGHTBEGIN#### |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
9 // |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
10 // ------------------------------------------- |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
11 // The contents of this file are subject to the Red Hat eCos Public License |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
12 // Version 1.1 (the "License"); you may not use this file except in |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
13 // compliance with the License. You may obtain a copy of the License at |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
14 // http://www.redhat.com/ |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
15 // |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
16 // Software distributed under the License is distributed on an "AS IS" |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
17 // basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
18 // License for the specific language governing rights and limitations under |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
19 // the License. |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
20 // |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
21 // The Original Code is eCos - Embedded Configurable Operating System, |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
22 // released September 30, 1998. |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
23 // |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
24 // The Initial Developer of the Original Code is Red Hat. |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
25 // Portions created by Red Hat are |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
26 // Copyright (C) 1998, 1999, 2000, 2001 Red Hat, Inc. |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
27 // All Rights Reserved. |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
28 // ------------------------------------------- |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
29 // |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
30 //####COPYRIGHTEND#### |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
31 //=========================================================================== |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
32 //#####DESCRIPTIONBEGIN#### |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
33 // |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
34 // Author(s): jlarmour |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
35 // Contributors: |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
36 // Date: 2001-11-27 |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
37 // Purpose: Provide string functions derived from BSD |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
38 // Description: |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
39 // Usage: #include <string.h> |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
40 // |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
41 //####DESCRIPTIONEND#### |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
42 // |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
43 //=========================================================================== |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
44 |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
45 // CONFIGURATION |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
46 |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
47 #include <pkgconf/libc_string.h> // Configuration header |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
48 |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
49 // INCLUDES |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
50 |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
51 #include <cyg/infra/cyg_type.h> // Common type definitions |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
52 #include <cyg/infra/cyg_trac.h> // Tracing support |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
53 #include <cyg/infra/cyg_ass.h> // Assertion support |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
54 #include <string.h> // Header for this file |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
55 #include <stddef.h> // size_t, NULL etc. |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
56 #include <ctype.h> // toupper/tolower |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
57 |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
58 // FUNCTIONS |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
59 |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
60 /*---------------------------------------------------------------------*/ |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
61 /* strcasecmp */ |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
62 |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
63 __externC int |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
64 __strcasecmp( const char *s1, const char *s2 ) |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
65 { |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
66 CYG_REPORT_FUNCNAMETYPE( "strcasecmp", "returning %d" ); |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
67 CYG_REPORT_FUNCARG2( "s1=%08x, s2=%08x", s1, s2 ); |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
68 |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
69 CYG_CHECK_DATA_PTR( s1, "s1 is not a valid pointer!" ); |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
70 CYG_CHECK_DATA_PTR( s2, "s2 is not a valid pointer!" ); |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
71 |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
72 while (*s1 != '\0' && tolower(*s1) == tolower(*s2)) |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
73 { |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
74 s1++; |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
75 s2++; |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
76 } |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
77 |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
78 int ret = tolower(*(unsigned char *) s1) - tolower(*(unsigned char *) s2); |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
79 CYG_REPORT_RETVAL( ret ); |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
80 return ret; |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
81 } |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
82 |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
83 __externC int |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
84 strcasecmp( const char *s1, const char *s2 ) \ |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
85 CYGBLD_ATTRIB_WEAK_ALIAS(__strcasecmp); |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
86 |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
87 |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
88 /*---------------------------------------------------------------------*/ |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
89 /* strncasecmp */ |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
90 |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
91 __externC int |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
92 __strncasecmp( const char *s1, const char *s2, size_t n ) |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
93 { |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
94 CYG_REPORT_FUNCNAMETYPE( "strncasecmp", "returning %d" ); |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
95 CYG_REPORT_FUNCARG3( "s1=%08x, s2=%08x, n=%d", s1, s2, n ); |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
96 |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
97 if (n == 0) |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
98 { |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
99 CYG_REPORT_RETVAL(0); |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
100 return 0; |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
101 } |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
102 |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
103 CYG_CHECK_DATA_PTR( s1, "s1 is not a valid pointer!" ); |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
104 CYG_CHECK_DATA_PTR( s2, "s2 is not a valid pointer!" ); |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
105 |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
106 while (n-- != 0 && tolower(*s1) == tolower(*s2)) |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
107 { |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
108 if (n == 0 || *s1 == '\0' || *s2 == '\0') |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
109 break; |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
110 s1++; |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
111 s2++; |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
112 } |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
113 |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
114 int ret = tolower(*(unsigned char *) s1) - tolower(*(unsigned char *) s2); |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
115 CYG_REPORT_RETVAL( ret ); |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
116 return ret; |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
117 } |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
118 |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
119 __externC int |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
120 strncasecmp( const char *s1, const char *s2, size_t n ) \ |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
121 CYGBLD_ATTRIB_WEAK_ALIAS(__strncasecmp); |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
122 |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
123 /*---------------------------------------------------------------------*/ |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
124 /* bcmp */ |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
125 |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
126 __externC int |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
127 __bcmp( const void *s1, const void *s2, size_t n ) |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
128 { |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
129 // Don't bother tracing - memcmp can do that |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
130 return memcmp (s1, s2, n); |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
131 } |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
132 |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
133 __externC int |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
134 bcmp( const void *s1, const void *s2, size_t n ) \ |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
135 CYGBLD_ATTRIB_WEAK_ALIAS(__bcmp); |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
136 |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
137 /*---------------------------------------------------------------------*/ |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
138 /* bcopy */ |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
139 |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
140 __externC void |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
141 __bcopy( const void *src, void *dest, size_t n ) |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
142 { |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
143 // Don't bother tracing - memmove can do that |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
144 memmove (dest, src, n); |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
145 } |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
146 |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
147 __externC void |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
148 bcopy( const void *src, void *dest, size_t n ) \ |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
149 CYGBLD_ATTRIB_WEAK_ALIAS(__bcopy); |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
150 |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
151 /*---------------------------------------------------------------------*/ |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
152 /* bzero */ |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
153 |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
154 __externC void |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
155 __bzero( void *s, size_t n ) |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
156 { |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
157 // Don't bother tracing - memset can do that |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
158 memset( s, 0, n ); |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
159 } |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
160 |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
161 __externC void |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
162 bzero( void *s, size_t n ) CYGBLD_ATTRIB_WEAK_ALIAS(__bzero); |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
163 |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
164 /*---------------------------------------------------------------------*/ |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
165 /* index */ |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
166 |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
167 __externC char * |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
168 __index( const char *s, int c ) |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
169 { |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
170 // Don't bother tracing - strchr can do that |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
171 return strchr(s, c); |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
172 } |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
173 |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
174 __externC char * |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
175 index( const char *s, int c ) CYGBLD_ATTRIB_WEAK_ALIAS(__index); |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
176 |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
177 /*---------------------------------------------------------------------*/ |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
178 /* rindex */ |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
179 |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
180 __externC char * |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
181 __rindex( const char *s, int c ) |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
182 { |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
183 // Don't bother tracing - strrchr can do that |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
184 return strrchr(s, c); |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
185 } |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
186 |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
187 __externC char * |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
188 rindex( const char *s, int c ) CYGBLD_ATTRIB_WEAK_ALIAS(__rindex); |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
189 |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
190 /*---------------------------------------------------------------------*/ |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
191 /* swab */ |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
192 |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
193 __externC void |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
194 __swab( const void *from, void *to, size_t n ) |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
195 { |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
196 const char *f = (const char *)from; |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
197 char *t = (char *)to; |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
198 size_t ptr; |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
199 |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
200 CYG_REPORT_FUNCNAME( "swab" ); |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
201 CYG_REPORT_FUNCARG3( "from=%08x, to=%08x, n=%d", from, to, n ); |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
202 |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
203 if (n) { |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
204 CYG_CHECK_DATA_PTR( from, "from is not a valid pointer!" ); |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
205 CYG_CHECK_DATA_PTR( to, "to is not a valid pointer!" ); |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
206 } |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
207 |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
208 for (ptr = 1; ptr < n; ptr += 2) |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
209 { |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
210 char p = f[ptr]; |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
211 char q = f[ptr-1]; |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
212 t[ptr-1] = p; |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
213 t[ptr ] = q; |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
214 } |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
215 if (ptr == n) /* I.e., if n is odd, */ |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
216 t[ptr-1] = '\0'; /* then pad with a NUL. */ |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
217 |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
218 CYG_REPORT_RETURN(); |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
219 } |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
220 |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
221 __externC void |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
222 swab( const void *from, void *to, size_t n ) \ |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
223 CYGBLD_ATTRIB_WEAK_ALIAS(__swab); |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
224 |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
225 /*---------------------------------------------------------------------*/ |
|
51b34619b677
Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff
changeset
|
226 // EOF bsdstring.cxx |
