annotate packages/language/c/libc/string/current/src/bsdstring.cxx @ 210:d2c90368aeef

Merge from eCos master repository on 2002-05-23-21:39:14-BST
author jlarmour
date Thu, 23 May 2002 22:59:51 +0000
parents e0c0827131d1
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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 //===========================================================================
208
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 197
diff changeset
8 //####ECOSGPLCOPYRIGHTBEGIN####
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 197
diff changeset
9 // -------------------------------------------
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 197
diff changeset
10 // This file is part of eCos, the Embedded Configurable Operating System.
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 197
diff changeset
11 // Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 197
diff changeset
12 //
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 197
diff changeset
13 // eCos is free software; you can redistribute it and/or modify it under
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 197
diff changeset
14 // the terms of the GNU General Public License as published by the Free
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 197
diff changeset
15 // Software Foundation; either version 2 or (at your option) any later version.
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 197
diff changeset
16 //
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 197
diff changeset
17 // eCos is distributed in the hope that it will be useful, but WITHOUT ANY
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 197
diff changeset
18 // WARRANTY; without even the implied warranty of MERCHANTABILITY or
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 197
diff changeset
19 // FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 197
diff changeset
20 // for more details.
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 197
diff changeset
21 //
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 197
diff changeset
22 // You should have received a copy of the GNU General Public License along
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 197
diff changeset
23 // with eCos; if not, write to the Free Software Foundation, Inc.,
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 197
diff changeset
24 // 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 197
diff changeset
25 //
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 197
diff changeset
26 // As a special exception, if other files instantiate templates or use macros
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 197
diff changeset
27 // or inline functions from this file, or you compile this file and link it
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 197
diff changeset
28 // with other works to produce a work based on this file, this file does not
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 197
diff changeset
29 // by itself cause the resulting work to be covered by the GNU General Public
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 197
diff changeset
30 // License. However the source code for this file must still be made available
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 197
diff changeset
31 // in accordance with section (3) of the GNU General Public License.
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 197
diff changeset
32 //
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 197
diff changeset
33 // This exception does not invalidate any other reasons why a work based on
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 197
diff changeset
34 // this file might be covered by the GNU General Public License.
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 197
diff changeset
35 //
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 197
diff changeset
36 // Alternative licenses for eCos may be arranged by contacting Red Hat, Inc.
210
d2c90368aeef Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents: 208
diff changeset
37 // at http://sources.redhat.com/ecos/ecos-license/
208
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 197
diff changeset
38 // -------------------------------------------
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 197
diff changeset
39 //####ECOSGPLCOPYRIGHTEND####
197
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 //#####DESCRIPTIONBEGIN####
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 // Author(s): jlarmour
51b34619b677 Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff changeset
44 // Contributors:
51b34619b677 Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff changeset
45 // Date: 2001-11-27
51b34619b677 Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff changeset
46 // 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
47 // Description:
51b34619b677 Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff changeset
48 // Usage: #include <string.h>
51b34619b677 Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff changeset
49 //
51b34619b677 Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff changeset
50 //####DESCRIPTIONEND####
51b34619b677 Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff changeset
51 //
51b34619b677 Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff changeset
52 //===========================================================================
51b34619b677 Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff changeset
53
51b34619b677 Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff changeset
54 // CONFIGURATION
51b34619b677 Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff changeset
55
51b34619b677 Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff changeset
56 #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
57
51b34619b677 Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff changeset
58 // INCLUDES
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 #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
61 #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
62 #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
63 #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
64 #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
65 #include <ctype.h> // toupper/tolower
51b34619b677 Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff changeset
66
51b34619b677 Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff changeset
67 // FUNCTIONS
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 /*---------------------------------------------------------------------*/
51b34619b677 Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff changeset
70 /* strcasecmp */
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 __externC int
51b34619b677 Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff changeset
73 __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
74 {
51b34619b677 Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff changeset
75 CYG_REPORT_FUNCNAMETYPE( "strcasecmp", "returning %d" );
51b34619b677 Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff changeset
76 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
77
51b34619b677 Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff changeset
78 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
79 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
80
51b34619b677 Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff changeset
81 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
82 {
51b34619b677 Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff changeset
83 s1++;
51b34619b677 Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff changeset
84 s2++;
51b34619b677 Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff changeset
85 }
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 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
88 CYG_REPORT_RETVAL( ret );
51b34619b677 Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff changeset
89 return ret;
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
51b34619b677 Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff changeset
92 __externC int
51b34619b677 Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff changeset
93 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
94 CYGBLD_ATTRIB_WEAK_ALIAS(__strcasecmp);
51b34619b677 Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff changeset
95
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 /*---------------------------------------------------------------------*/
51b34619b677 Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff changeset
98 /* strncasecmp */
51b34619b677 Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff changeset
99
51b34619b677 Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff changeset
100 __externC int
51b34619b677 Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff changeset
101 __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
102 {
51b34619b677 Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff changeset
103 CYG_REPORT_FUNCNAMETYPE( "strncasecmp", "returning %d" );
51b34619b677 Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff changeset
104 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
105
51b34619b677 Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff changeset
106 if (n == 0)
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 CYG_REPORT_RETVAL(0);
51b34619b677 Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff changeset
109 return 0;
51b34619b677 Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff changeset
110 }
51b34619b677 Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff changeset
111
51b34619b677 Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff changeset
112 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
113 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
114
51b34619b677 Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff changeset
115 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
116 {
51b34619b677 Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff changeset
117 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
118 break;
51b34619b677 Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff changeset
119 s1++;
51b34619b677 Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff changeset
120 s2++;
51b34619b677 Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff changeset
121 }
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 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
124 CYG_REPORT_RETVAL( ret );
51b34619b677 Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff changeset
125 return ret;
51b34619b677 Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff changeset
126 }
51b34619b677 Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff changeset
127
51b34619b677 Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff changeset
128 __externC int
51b34619b677 Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff changeset
129 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
130 CYGBLD_ATTRIB_WEAK_ALIAS(__strncasecmp);
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 /* bcmp */
51b34619b677 Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff changeset
134
51b34619b677 Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff changeset
135 __externC int
51b34619b677 Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff changeset
136 __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
137 {
51b34619b677 Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff changeset
138 // 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
139 return memcmp (s1, s2, n);
51b34619b677 Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff changeset
140 }
51b34619b677 Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff changeset
141
51b34619b677 Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff changeset
142 __externC int
51b34619b677 Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff changeset
143 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
144 CYGBLD_ATTRIB_WEAK_ALIAS(__bcmp);
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 /* bcopy */
51b34619b677 Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff changeset
148
51b34619b677 Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff changeset
149 __externC void
51b34619b677 Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff changeset
150 __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
151 {
51b34619b677 Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff changeset
152 // 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
153 memmove (dest, src, n);
51b34619b677 Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff changeset
154 }
51b34619b677 Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff changeset
155
51b34619b677 Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff changeset
156 __externC void
51b34619b677 Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff changeset
157 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
158 CYGBLD_ATTRIB_WEAK_ALIAS(__bcopy);
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 /* bzero */
51b34619b677 Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff changeset
162
51b34619b677 Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff changeset
163 __externC void
51b34619b677 Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff changeset
164 __bzero( void *s, size_t n )
51b34619b677 Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff changeset
165 {
51b34619b677 Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff changeset
166 // 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
167 memset( s, 0, n );
51b34619b677 Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff changeset
168 }
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 __externC void
51b34619b677 Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff changeset
171 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
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 /* index */
51b34619b677 Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff changeset
175
51b34619b677 Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff changeset
176 __externC char *
51b34619b677 Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff changeset
177 __index( const char *s, int c )
51b34619b677 Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff changeset
178 {
51b34619b677 Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff changeset
179 // 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
180 return strchr(s, c);
51b34619b677 Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff changeset
181 }
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 __externC char *
51b34619b677 Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff changeset
184 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
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 /* rindex */
51b34619b677 Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff changeset
188
51b34619b677 Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff changeset
189 __externC char *
51b34619b677 Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff changeset
190 __rindex( const char *s, int c )
51b34619b677 Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff changeset
191 {
51b34619b677 Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff changeset
192 // 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
193 return strrchr(s, c);
51b34619b677 Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff changeset
194 }
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 __externC char *
51b34619b677 Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff changeset
197 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
198
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 /* swab */
51b34619b677 Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff changeset
201
51b34619b677 Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff changeset
202 __externC void
51b34619b677 Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff changeset
203 __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
204 {
51b34619b677 Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff changeset
205 const char *f = (const char *)from;
51b34619b677 Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff changeset
206 char *t = (char *)to;
51b34619b677 Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff changeset
207 size_t ptr;
51b34619b677 Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff changeset
208
51b34619b677 Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff changeset
209 CYG_REPORT_FUNCNAME( "swab" );
51b34619b677 Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff changeset
210 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
211
51b34619b677 Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff changeset
212 if (n) {
51b34619b677 Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff changeset
213 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
214 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
215 }
51b34619b677 Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff changeset
216
51b34619b677 Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff changeset
217 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
218 {
51b34619b677 Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff changeset
219 char p = f[ptr];
51b34619b677 Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff changeset
220 char q = f[ptr-1];
51b34619b677 Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff changeset
221 t[ptr-1] = p;
51b34619b677 Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff changeset
222 t[ptr ] = q;
51b34619b677 Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff changeset
223 }
51b34619b677 Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff changeset
224 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
225 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
226
51b34619b677 Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff changeset
227 CYG_REPORT_RETURN();
51b34619b677 Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff changeset
228 }
51b34619b677 Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff changeset
229
51b34619b677 Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff changeset
230 __externC void
51b34619b677 Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff changeset
231 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
232 CYGBLD_ATTRIB_WEAK_ALIAS(__swab);
51b34619b677 Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff changeset
233
51b34619b677 Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff changeset
234 /*---------------------------------------------------------------------*/
51b34619b677 Merge from eCos master repository on 2001-11-30-11:22:06-GMT
jlarmour
parents:
diff changeset
235 // EOF bsdstring.cxx