git.ucc.asn.au
/
tpg
/
acess2.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Usermode/libc - Fix strchr and strrchr behavior
[tpg/acess2.git]
/
Usermode
/
Libraries
/
libc.so_src
/
string.c
diff --git
a/Usermode/Libraries/libc.so_src/string.c
b/Usermode/Libraries/libc.so_src/string.c
index
ae91b13
..
09481d8
100644
(file)
--- a/
Usermode/Libraries/libc.so_src/string.c
+++ b/
Usermode/Libraries/libc.so_src/string.c
@@
-87,8
+87,13
@@
EXPORT char *strcpy(char *dst, const char *src)
EXPORT char *strncpy(char *dst, const char *src, size_t num)
{
char *to = dst;
EXPORT char *strncpy(char *dst, const char *src, size_t num)
{
char *to = dst;
- while(*src && num--) *to++ = *src++;
- *to = '\0';
+ while(num --)
+ {
+ if(*src)
+ *to++ = *src++;
+ else
+ *to++ = '\0';
+ }
return dst;
}
return dst;
}
@@
-125,9
+130,10
@@
EXPORT char *strncat(char *dst, const char *src, size_t n)
*/
EXPORT size_t strlen(const char *str)
{
*/
EXPORT size_t strlen(const char *str)
{
- size_t retval;
- for(retval = 0; *str != '\0'; str++, retval++);
- return retval;
+ size_t len = 0;
+ while(str[len] != '\0')
+ len ++;
+ return len;
}
/**
}
/**
@@
-137,9
+143,9
@@
EXPORT size_t strlen(const char *str)
*/
EXPORT size_t strnlen(const char *str, size_t maxlen)
{
*/
EXPORT size_t strnlen(const char *str, size_t maxlen)
{
- size_t len;
-
for( len = 0; maxlen -- && *str; str ++, len ++
)
- ;
+ size_t len
= 0
;
+
while( len < maxlen && str[len] != '\0'
)
+
len ++
;
return len;
}
return len;
}
@@
-178,15
+184,16
@@
EXPORT char *strndup(const char *str, size_t maxlen)
/**
* \fn EXPORT char *strchr(char *str, int character)
* \brief Locate a character in a string
/**
* \fn EXPORT char *strchr(char *str, int character)
* \brief Locate a character in a string
+ * \note The terminating NUL is part of the string
*/
EXPORT char *strchr(const char *_str, int character)
{
const unsigned char* str = (const unsigned char*)_str;
*/
EXPORT char *strchr(const char *_str, int character)
{
const unsigned char* str = (const unsigned char*)_str;
- for(;*str;str++)
+ do
{
if( *str == character )
return (char*)str;
{
if( *str == character )
return (char*)str;
- }
+ }
while( *str++ );
return NULL;
}
return NULL;
}
@@
-197,11
+204,12
@@
EXPORT char *strchr(const char *_str, int character)
EXPORT char *strrchr(const char *_str, int character)
{
const unsigned char* str = (const unsigned char*)_str;
EXPORT char *strrchr(const char *_str, int character)
{
const unsigned char* str = (const unsigned char*)_str;
- for( int i = strlen(_str); i--; )
+ size_t i = strlen(_str);
+ do
{
if(str[i] == character)
return (void*)&str[i];
{
if(str[i] == character)
return (void*)&str[i];
- }
+ }
while( i -- );
return NULL;
}
return NULL;
}
UCC
git Repository :: git.ucc.asn.au