From d1892520baf76b783efc0e9d9d6fc0a2ac4f4404 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20M=C3=B6ller?= Date: Wed, 17 Oct 2018 13:39:01 +0200 Subject: [PATCH] Delete more rtc_base/stringutils.* Delete nonnull, strchr, strchrn, strcatn, strlenn and Traits. Bug: webrtc:6424 Change-Id: I3b5a48cb71c6de33635f25ef64d941c422ad0881 Reviewed-on: https://webrtc-review.googlesource.com/c/106341 Reviewed-by: Karl Wiberg Commit-Queue: Niels Moller Cr-Commit-Position: refs/heads/master@{#25232} --- rtc_base/stringutils.cc | 18 +++++++ rtc_base/stringutils.h | 107 ++-------------------------------------- rtc_base/win32.cc | 4 +- 3 files changed, 24 insertions(+), 105 deletions(-) diff --git a/rtc_base/stringutils.cc b/rtc_base/stringutils.cc index db48ec722f..333c060738 100644 --- a/rtc_base/stringutils.cc +++ b/rtc_base/stringutils.cc @@ -14,6 +14,24 @@ namespace rtc { +size_t strcpyn(char* buffer, + size_t buflen, + const char* source, + size_t srclen /* = SIZE_UNKNOWN */) { + if (buflen <= 0) + return 0; + + if (srclen == SIZE_UNKNOWN) { + srclen = strlen(source); + } + if (srclen >= buflen) { + srclen = buflen - 1; + } + memcpy(buffer, source, srclen); + buffer[srclen] = 0; + return srclen; +} + void replace_substrs(const char* search, size_t search_len, const char* replace, diff --git a/rtc_base/stringutils.h b/rtc_base/stringutils.h index 75436b19cd..28fe1bb442 100644 --- a/rtc_base/stringutils.h +++ b/rtc_base/stringutils.h @@ -60,110 +60,11 @@ namespace rtc { const size_t SIZE_UNKNOWN = static_cast(-1); -template -struct Traits { - // STL string type - // typedef XXX string; - // Null-terminated string - // inline static const CTYPE* empty_str(); -}; - -/////////////////////////////////////////////////////////////////////////////// -// String utilities which work with char or wchar_t -/////////////////////////////////////////////////////////////////////////////// - -template -inline const CTYPE* nonnull(const CTYPE* str, const CTYPE* def_str = nullptr) { - return str ? str : (def_str ? def_str : Traits::empty_str()); -} - -template -const CTYPE* strchr(const CTYPE* str, const CTYPE* chs) { - for (size_t i = 0; str[i]; ++i) { - for (size_t j = 0; chs[j]; ++j) { - if (str[i] == chs[j]) { - return str + i; - } - } - } - return 0; -} - -template -const CTYPE* strchrn(const CTYPE* str, size_t slen, CTYPE ch) { - for (size_t i = 0; i < slen && str[i]; ++i) { - if (str[i] == ch) { - return str + i; - } - } - return 0; -} - -template -size_t strlenn(const CTYPE* buffer, size_t buflen) { - size_t bufpos = 0; - while (buffer[bufpos] && (bufpos < buflen)) { - ++bufpos; - } - return bufpos; -} - -// Safe versions of strncpy, strncat, snprintf and vsnprintf that always -// null-terminate. - -template -size_t strcpyn(CTYPE* buffer, +// Safe version of strncpy that always nul-terminate. +size_t strcpyn(char* buffer, size_t buflen, - const CTYPE* source, - size_t srclen = SIZE_UNKNOWN) { - if (buflen <= 0) - return 0; - - if (srclen == SIZE_UNKNOWN) { - srclen = strlenn(source, buflen - 1); - } else if (srclen >= buflen) { - srclen = buflen - 1; - } - memcpy(buffer, source, srclen * sizeof(CTYPE)); - buffer[srclen] = 0; - return srclen; -} - -template -size_t strcatn(CTYPE* buffer, - size_t buflen, - const CTYPE* source, - size_t srclen = SIZE_UNKNOWN) { - if (buflen <= 0) - return 0; - - size_t bufpos = strlenn(buffer, buflen - 1); - return bufpos + strcpyn(buffer + bufpos, buflen - bufpos, source, srclen); -} - -/////////////////////////////////////////////////////////////////////////////// -// Traits specializations -/////////////////////////////////////////////////////////////////////////////// - -template <> -struct Traits { - typedef std::string string; - inline static const char* empty_str() { return ""; } -}; - -/////////////////////////////////////////////////////////////////////////////// -// Traits specializations (Windows only, currently) -/////////////////////////////////////////////////////////////////////////////// - -#if defined(WEBRTC_WIN) - -template <> -struct Traits { - typedef std::wstring string; - inline static const wchar_t* empty_str() { return L""; } -}; - -#endif // WEBRTC_WIN + const char* source, + size_t srclen = SIZE_UNKNOWN); /////////////////////////////////////////////////////////////////////////////// // UTF helpers (Windows only) diff --git a/rtc_base/win32.cc b/rtc_base/win32.cc index e13875283e..e3482e3238 100644 --- a/rtc_base/win32.cc +++ b/rtc_base/win32.cc @@ -224,8 +224,8 @@ int inet_pton_v6(const char* src, void* dst) { *(readcursor + 2) != 0) { // Check for periods, which we'll take as a sign of v4 addresses. const char* addrstart = readcursor + 2; - if (rtc::strchr(addrstart, ".")) { - const char* colon = rtc::strchr(addrstart, "::"); + if (strchr(addrstart, '.')) { + const char* colon = strchr(addrstart, ':'); if (colon) { uint16_t a_short; int bytesread = 0;