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