Mercurial > sdl-ios-xcode
diff src/stdlib/SDL_string.c @ 1379:c0a74f199ecf
Use only safe string functions
author | Sam Lantinga <slouken@libsdl.org> |
---|---|
date | Sun, 19 Feb 2006 23:46:34 +0000 |
parents | c71e05b4dc2e |
children | d910939febfa |
line wrap: on
line diff
--- a/src/stdlib/SDL_string.c Sun Feb 19 23:38:57 2006 +0000 +++ b/src/stdlib/SDL_string.c Sun Feb 19 23:46:34 2006 +0000 @@ -294,39 +294,38 @@ } #endif -#ifndef HAVE_STRCPY -char *SDL_strcpy(char *dst, const char *src) +#ifndef HAVE_STRLCPY +size_t SDL_strlcpy(char *dst, const char *src, size_t maxlen) { - char *dstp = dst; - while ( *src ) { - *dstp++ = *src++; + size_t srclen = SDL_strlen(src); + if ( maxlen > 0 ) { + size_t len = SDL_min(srclen, maxlen-1); + SDL_memcpy(dst, src, len); + dst[len] = '\0'; } - *dstp = '\0'; - - return dst; + return srclen; } #endif -#ifndef HAVE_STRNCPY -char *SDL_strncpy(char *dst, const char *src, size_t maxlen) +#ifndef HAVE_STRLCAT +size_t SDL_strlcat(char *dst, const char *src, size_t maxlen) { - char *dstp = dst; - while ( maxlen-- && *src ) { - *dstp++ = *src++; + size_t dstlen = SDL_strlen(dst); + size_t srclen = SDL_strlen(src); + if ( dstlen < maxlen ) { + SDL_strlcpy(dst+dstlen, src, maxlen-dstlen); } - *dstp = '\0'; - - return dst; + return dstlen+srclen; } #endif #ifndef HAVE_STRDUP char *SDL_strdup(const char *string) { - size_t len = SDL_strlen(string); - char *newstr = SDL_malloc(len+1); + size_t len = SDL_strlen(string)+1; + char *newstr = SDL_malloc(len); if ( newstr ) { - SDL_strcpy(newstr, string); + SDL_strlcpy(newstr, string, len); } return newstr; } @@ -912,7 +911,7 @@ if ( size > maxlen ) { size = maxlen; } - SDL_strncpy(text, num, size); + SDL_strlcpy(text, num, size); return size; } @@ -926,7 +925,7 @@ if ( size > maxlen ) { size = maxlen; } - SDL_strncpy(text, num, size); + SDL_strlcpy(text, num, size); return size; } @@ -941,7 +940,7 @@ if ( size > maxlen ) { size = maxlen; } - SDL_strncpy(text, num, size); + SDL_strlcpy(text, num, size); return size; } @@ -955,7 +954,7 @@ if ( size > maxlen ) { size = maxlen; } - SDL_strncpy(text, num, size); + SDL_strlcpy(text, num, size); return size; }