1// Copyright 2016 The Fuchsia Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#include <fbl/string_buffer.h> 6 7#include <stdio.h> 8#include <string.h> 9 10namespace fbl { 11namespace internal { 12 13size_t StringBufferAppendPrintf(char* dest, size_t remaining, 14 const char* format, va_list ap) { 15 if (remaining == 0u) { 16 return 0u; 17 } 18 int count = vsnprintf(dest, remaining + 1u, format, ap); 19 if (count < 0) { 20 return 0u; 21 } 22 size_t length = static_cast<size_t>(count); 23 return length >= remaining ? remaining : length; 24} 25 26} // namespace internal 27} // namespace fbl 28