1f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved.
2f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
3f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)// found in the LICENSE file.
4f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
5f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#include "crazy_linker_error.h"
6f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
7f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#include <stdarg.h>
8f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#include <string.h>
9f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#include <stdio.h>
10f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
11f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#include "crazy_linker_debug.h"
12f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
13f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)namespace crazy {
14f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
15f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)void Error::Set(const char* message) {
16f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  if (!message)
17f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)    message = "";
18f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  strlcpy(buff_, message, sizeof(buff_));
19f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
20f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  LOG("--- ERROR: %s\n", buff_);
21f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)}
22f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
23f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)void Error::Append(const char* message) {
24f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  if (!message)
25f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)    return;
26f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  strlcat(buff_, message, sizeof(buff_));
27f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
28f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  LOG("--- ERROR: %s\n", buff_);
29f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)}
30f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
31f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)void Error::Format(const char* fmt, ...) {
32f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  va_list args;
33f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  va_start(args, fmt);
34f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  vsnprintf(buff_, sizeof(buff_), fmt, args);
35f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  va_end(args);
36f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
37f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  LOG("--- ERROR: %s\n", buff_);
38f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)}
39f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
40f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)void Error::AppendFormat(const char* fmt, ...) {
41f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  va_list args;
42f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  va_start(args, fmt);
43f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  size_t buff_len = strlen(buff_);
44f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  vsnprintf(buff_ + buff_len, sizeof(buff_) - buff_len, fmt, args);
45f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  va_end(args);
46f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
47f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  LOG("--- ERROR: %s\n", buff_);
48f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)}
49f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
50f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)}  // namespace crazy
51