stuff
[vg.git] / src / vg / vg_io.h
index afd134f45a05a76d72d0a69ee7a5076a2eeecd93..2650b3fd9f7e5ac6faa2f33cf4a70a888b7a0f5e 100644 (file)
@@ -1,7 +1,14 @@
-// Copyright (C) 2021 Harry Godden (hgn) - All Rights Reserved
+/* Copyright (C) 2021-2022 Harry Godden (hgn) - All Rights Reserved */
 
-// Coloured logging
-// ===========================================================================================================
+#ifndef VG_IO_H
+#define VG_IO_H
+
+#include "vg_stdint.h"
+#include "vg_platform.h"
+#include <stdio.h>
+#include <stdarg.h>
+#include <string.h>
+#include <malloc.h>
 
 #define KNRM  "\x1B[0m"
 #define KRED  "\x1B[31m"
@@ -14,7 +21,8 @@
 
 void (*vg_log_callback)( const char *str ) = NULL;
 
-static void vg_log_write( FILE *file, const char *prefix, const char *fmt, va_list args )
+static void vg_log_write( FILE *file, const char *prefix, 
+      const char *fmt, va_list args )
 {
        char buffer[512];
        int i, j;
@@ -27,7 +35,7 @@ static void vg_log_write( FILE *file, const char *prefix, const char *fmt, va_li
                        break;
        }
        
-       j = i + vsnprintf( buffer + i, vg_list_size( buffer ) - i -2, fmt, args );
+       j = i + vsnprintf( buffer + i, vg_list_size( buffer ) - i -12, fmt, args );
        strcpy( buffer + j, KNRM );
        
        fputs( buffer, file );
@@ -36,18 +44,24 @@ static void vg_log_write( FILE *file, const char *prefix, const char *fmt, va_li
                vg_log_callback( buffer );
 }
 
-static void vg_success( const char *fmt, ... )
-       { va_list args; va_start( args, fmt ); vg_log_write( stdout, (KGRN "success" KWHT "| " KGRN), fmt, args ); va_end( args ); }
-static void vg_info( const char *fmt, ... )
-       { va_list args; va_start( args, fmt ); vg_log_write( stdout, (KNRM "   info" KWHT "| " KNRM), fmt, args ); va_end( args ); }
-static void vg_warn( const char *fmt, ... )
-       { va_list args; va_start( args, fmt ); vg_log_write( stdout, (KYEL "   warn" KWHT "| " KYEL), fmt, args ); va_end( args ); }
-static void vg_error( const char *fmt, ... )
-       { va_list args; va_start( args, fmt ); vg_log_write( stderr, (KRED "  error" KWHT "| " KRED), fmt, args ); va_end( args ); }
+#define VG_LOGX( NAME, PIPE, PFX )           \
+static void NAME(const char *fmt, ...)       \
+{                                            \
+   va_list args;                             \
+   va_start( args, fmt );                    \
+   vg_log_write( PIPE, (PFX), fmt, args );   \
+   va_end( args );                           \
+}
 
-// FILE IO
-// ===========================================================================================================
+VG_LOGX( vg_success, stdout, (KGRN "success" KWHT "| " KGRN) )
+VG_LOGX( vg_info,    stdout, (KNRM "   info" KWHT "| " KNRM) )
+VG_LOGX( vg_log,     stdout, (KWHT "    log" KWHT "| " KWHT) )
+VG_LOGX( vg_warn,    stdout, (KYEL "   warn" KWHT "| " KYEL) )
+VG_LOGX( vg_error,   stderr, (KRED "  error" KWHT "| " KRED) )
 
+/*
+ * FIle I/O
+ */
 static i64 vg_file_size( FILE *fileptr )
 {
        fseek( fileptr, 0, SEEK_END );
@@ -57,7 +71,7 @@ static i64 vg_file_size( FILE *fileptr )
        return fsize;
 }
 
-static void *vg_disk_open_read( const char *path, int const reserve_end, i64 *size )
+static void *vg_disk_open_read( const char *path, int reserve_end, i64 *size )
 {
        FILE *f = fopen( path, "rb" );
        if( f )
@@ -67,7 +81,7 @@ static void *vg_disk_open_read( const char *path, int const reserve_end, i64 *si
                
                if( buf )
                {
-                       // Invalid / corrupt read
+                       /* Invalid / corrupt read */
                        if( fread( buf, 1, fsize, f ) != fsize )
                        {
                                free( buf );
@@ -91,7 +105,7 @@ static char *vg_disk_load_text( const char *path, i64 *size )
        char *buf;
        i64 fsize;
        
-       if( (buf = vg_disk_open_read( path, 1, &fsize )) )
+       if( (buf = (char *)vg_disk_open_read( path, 1, &fsize )) )
        {
                buf[ fsize ] = 0x00;
                *size = fsize +1;
@@ -138,3 +152,5 @@ static int vg_asset_write( const char *path, void *data, i64 size )
                return 0;
        }
 }
+
+#endif /* VG_IO_H */