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 <kwiberg@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25232}
This commit is contained in:
Niels Möller
2018-10-17 13:39:01 +02:00
committed by Commit Bot
parent fab9129e94
commit d1892520ba
3 changed files with 24 additions and 105 deletions

View File

@ -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,

View File

@ -60,110 +60,11 @@ namespace rtc {
const size_t SIZE_UNKNOWN = static_cast<size_t>(-1);
template <class CTYPE>
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 <class CTYPE>
inline const CTYPE* nonnull(const CTYPE* str, const CTYPE* def_str = nullptr) {
return str ? str : (def_str ? def_str : Traits<CTYPE>::empty_str());
}
template <class CTYPE>
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 <class CTYPE>
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 <class CTYPE>
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 <class CTYPE>
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 <class CTYPE>
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<char> specializations
///////////////////////////////////////////////////////////////////////////////
template <>
struct Traits<char> {
typedef std::string string;
inline static const char* empty_str() { return ""; }
};
///////////////////////////////////////////////////////////////////////////////
// Traits<wchar_t> specializations (Windows only, currently)
///////////////////////////////////////////////////////////////////////////////
#if defined(WEBRTC_WIN)
template <>
struct Traits<wchar_t> {
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)

View File

@ -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;