| /* | |
| * Copyright 2020 The WebRTC Project Authors. All rights reserved. | |
| * | |
| * Use of this source code is governed by a BSD-style license | |
| * that can be found in the LICENSE file in the root of the source | |
| * tree. An additional intellectual property rights grant can be found | |
| * in the file PATENTS. All contributing project authors may | |
| * be found in the AUTHORS file in the root of the source tree. | |
| */ | |
| #include "rtc_base/strings/string_format.h" | |
| #include <cstdarg> | |
| #include "rtc_base/checks.h" | |
| namespace rtc { | |
| namespace { | |
| // This is an arbitrary limitation that can be changed if necessary, or removed | |
| // if someone has the time and inclination to replicate the fancy logic from | |
| // Chromium's base::StringPrinf(). | |
| constexpr int kMaxSize = 512; | |
| } // namespace | |
| std::string StringFormat(const char* fmt, ...) { | |
| char buffer[kMaxSize]; | |
| va_list args; | |
| va_start(args, fmt); | |
| int result = vsnprintf(buffer, kMaxSize, fmt, args); | |
| va_end(args); | |
| RTC_DCHECK_GE(result, 0) << "ERROR: vsnprintf() failed with error " << result; | |
| RTC_DCHECK_LT(result, kMaxSize) | |
| << "WARNING: string was truncated from " << result << " to " | |
| << (kMaxSize - 1) << " characters"; | |
| return std::string(buffer); | |
| } | |
| } // namespace rtc |