42 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			42 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			C++
		
	
	
	
| /*
 | |
|  *  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 <cstdarg>
 | |
| 
 | |
| #include "rtc_base/strings/string_format.h"
 | |
| 
 | |
| #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
 |