X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Usermode%2FLibraries%2Flibc.so_src%2Fstring.c;h=09481d8605ae40c817005537de47902b386f51ae;hb=230612b2efeeb769f1d96193ec01b10bd36d9873;hp=ae91b13fcd2b0d765d79d4629037cf7ac21fac52;hpb=7d1c355c2843a140d5c474567c690402793aaa36;p=tpg%2Facess2.git diff --git a/Usermode/Libraries/libc.so_src/string.c b/Usermode/Libraries/libc.so_src/string.c index ae91b13f..09481d86 100644 --- 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; - while(*src && num--) *to++ = *src++; - *to = '\0'; + while(num --) + { + if(*src) + *to++ = *src++; + else + *to++ = '\0'; + } return dst; } @@ -125,9 +130,10 @@ EXPORT char *strncat(char *dst, const char *src, size_t n) */ 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) { - size_t len; - for( len = 0; maxlen -- && *str; str ++, len ++ ) - ; + size_t len = 0; + while( len < maxlen && str[len] != '\0' ) + 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 + * \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; - for(;*str;str++) + do { if( *str == character ) return (char*)str; - } + } while( *str++ ); 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; - for( int i = strlen(_str); i--; ) + size_t i = strlen(_str); + do { if(str[i] == character) return (void*)&str[i]; - } + } while( i -- ); return NULL; }