You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
90 lines
2.0 KiB
90 lines
2.0 KiB
// Copyright 2019 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 <assert.h>
|
|
#include <lib/syslog/global.h>
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
|
|
void __assert_fail(const char *expr, const char *file, int line, const char *func)
|
|
{
|
|
FX_LOGF(ERROR, "goldfish", "Assertion failed: %s (%s: %s: %d)", expr, file, func, line);
|
|
abort();
|
|
}
|
|
|
|
int puts(const char *s)
|
|
{
|
|
return fputs(s, stdout);
|
|
}
|
|
|
|
int printf(const char *format, ...)
|
|
{
|
|
va_list args;
|
|
va_start(args, format);
|
|
vfprintf(stdout, format, args);
|
|
va_end(args);
|
|
return 0;
|
|
}
|
|
|
|
int vprintf(const char *format, va_list ap)
|
|
{
|
|
return vfprintf(stdout, format, ap);
|
|
}
|
|
|
|
int fprintf(FILE *stream, const char *format, ...)
|
|
{
|
|
assert(stream == stdout || stream == stderr);
|
|
if (stream == stdout || stream == stderr)
|
|
{
|
|
va_list args;
|
|
va_start(args, format);
|
|
vfprintf(stream, format, args);
|
|
va_end(args);
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
static inline fx_log_severity_t severity(FILE *stream)
|
|
{
|
|
return stream == stdout ? FX_LOG_INFO : FX_LOG_ERROR;
|
|
}
|
|
|
|
int fputs(const char *s, FILE *stream)
|
|
{
|
|
assert(stream == stdout || stream == stderr);
|
|
if (stream == stdout || stream == stderr)
|
|
{
|
|
_FX_LOG(severity(stream), "goldfish", s);
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
int vfprintf(FILE *stream, const char *format, va_list ap)
|
|
{
|
|
assert(stream == stdout || stream == stderr);
|
|
if (stream == stdout || stream == stderr)
|
|
{
|
|
_FX_LOGVF(severity(stream), "goldfish", __FILE__, __LINE__,format, ap);
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
size_t fwrite(const void *ptr, size_t size, size_t nitems, FILE *stream)
|
|
{
|
|
assert(stream == stdout || stream == stderr);
|
|
char buffer[512];
|
|
size_t offset = 0;
|
|
size_t count = 0;
|
|
for (; count < nitems; count++)
|
|
{
|
|
snprintf(buffer + offset, sizeof(buffer) - offset, reinterpret_cast<const char *>(ptr) + offset, size);
|
|
offset += size;
|
|
if (offset > sizeof(buffer))
|
|
break;
|
|
}
|
|
buffer[sizeof(buffer) - 1] = 0;
|
|
fputs(buffer, stream);
|
|
return count;
|
|
}
|