blob: ce469e0f92f1c6c800fbbd83288c9cf28f9622fb [file] [log] [blame]
// Copyright 2021 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include <lib/fidl/cpp/any_error_in.h>
#include <cstdio>
#include <cstring>
namespace fidl::internal {
size_t ErrorsInBase::FormatImpl(const char* prelude, FormattingBuffer& buffer,
fit::inline_callback<size_t(char*, size_t)> display_error) {
int num_would_write = 0;
if (prelude != nullptr) {
num_would_write = snprintf(&(*buffer.begin()), buffer.size(), "%s", prelude);
ZX_ASSERT(num_would_write > 0);
if (static_cast<size_t>(num_would_write) >= buffer.size()) {
return buffer.size() - 1;
}
}
char* begin = &(*buffer.begin()) + num_would_write;
size_t len = buffer.size() - num_would_write;
return display_error(begin, len) + num_would_write;
}
const char* ErrorsInBase::kFrameworkErrorPrelude = nullptr;
const char* ErrorsInBase::kDomainErrorPrelude = "FIDL method domain error: ";
} // namespace fidl::internal