+++ /dev/null
-#ifndef VG_LOG_H
-#define VG_LOG_H
-
-#include <stdarg.h>
-#include <string.h>
-#include <malloc.h>
-#include "vg/vg_stdint.h"
-#include "vg/vg_platform.h"
-
-#define KNRM "\x1B[0m"
-#define KRED "\x1B[31m"
-#define KGRN "\x1B[32m"
-#define KYEL "\x1B[33m"
-#define KBLU "\x1B[34m"
-#define KMAG "\x1B[35m"
-#define KCYN "\x1B[36m"
-#define KWHT "\x1B[37m"
-
-vg_mutex log_print_mutex;
-
-struct vg_log
-{
- char buffer[64][96];
- u32 buffer_line_count, buffer_line_current;
-}
-static vg_log;
-
-void vg_console_append_to_log( const char *str )
-{
- if( vg_log.buffer_line_count < vg_list_size( vg_log.buffer ) )
- vg_log.buffer_line_count ++;
-
- char *dest = vg_log.buffer[ vg_log.buffer_line_current ++ ];
-
- for( int i=0; i<vg_list_size( vg_log.buffer[0] ); i++ )
- {
- if( !str[i] || ( i == vg_list_size(vg_log.buffer[0])-1 ) )
- {
- dest[i] = '\0';
- break;
- }
-
- dest[i] = str[i];
- }
-
- if( vg_log.buffer_line_current >= vg_list_size( vg_log.buffer ) )
- vg_log.buffer_line_current = 0;
-}
-
-VG_STATIC void vg_log_write( FILE *file, const char *prefix,
- const char *fmt, va_list args )
-{
- vg_mutex_lock( &log_print_mutex );
-
- char buffer[ 4096 ];
- int i, j;
-
- for( i=0; i<vg_list_size( buffer ); i ++ )
- {
- if( prefix[i] )
- buffer[i] = prefix[i];
- else
- break;
- }
-
- j = i + vsnprintf( buffer + i, vg_list_size( buffer ) - i -12, fmt, args );
- strcpy( buffer + j, KNRM );
-
- fputs( buffer, file );
-
- vg_console_append_to_log( buffer );
- vg_mutex_unlock( &log_print_mutex );
-}
-
-VG_STATIC void vg_log_init(void)
-{
- vg_mutex_init( &log_print_mutex );
-}
-
-#define VG_LOGX( NAME, PIPE, PFX ) \
-VG_STATIC void NAME(const char *fmt, ...) \
-{ \
- va_list args; \
- va_start( args, fmt ); \
- vg_log_write( PIPE, (PFX), fmt, args ); \
- va_end( args ); \
-}
-
-VG_LOGX( vg_success, stdout, (KGRN "success" KWHT "| " KGRN) )
-VG_LOGX( vg_info, stdout, (KNRM " info" KWHT "| " KNRM) )
-VG_LOGX( vg_warn, stdout, (KYEL " warn" KWHT "| " KYEL) )
-VG_LOGX( vg_error, stderr, (KRED " error" KWHT "| " KRED) )
-VG_LOGX( vg_low, stdout, (KWHT " log" KWHT "| " KWHT) )
-
-#endif /* VG_LOG_H */