#define VG_FILE_IO_CHUNK_SIZE 1024*256
-VG_STATIC void vg_file_print_invalid( FILE *fp )
+#ifdef __GNUC__
+ #ifndef __clang__
+ #pragma GCC push_options
+ #pragma GCC optimize ("O3")
+ #pragma GCC diagnostic push
+ #pragma GCC diagnostic ignored "-Wdeprecated-declarations"
+ #endif
+#endif
+
+static void vg_file_print_invalid( FILE *fp )
{
if( feof( fp )) {
vg_error( "mdl_open: header too short\n" );
}
/* read entire binary file */
-VG_STATIC void *vg_file_read( void *lin_alloc, const char *path, u32 *size )
-{
+static void *vg_file_read( void *lin_alloc, const char *path, u32 *size ){
FILE *f = fopen( path, "rb" );
if( f ){
- void *buffer = vg_linear_alloc( lin_alloc, 0 );
+ void *buffer = lin_alloc? vg_linear_alloc( lin_alloc, 0 ):
+ NULL;
u64 current = 0;
/* read in chunks */
for( u32 i=0; 1; i++ ){
- buffer = vg_linear_extend( lin_alloc, buffer, VG_FILE_IO_CHUNK_SIZE );
+ if( lin_alloc )
+ buffer = vg_linear_extend( lin_alloc,buffer,VG_FILE_IO_CHUNK_SIZE );
+ else
+ buffer = realloc( buffer, current + VG_FILE_IO_CHUNK_SIZE );
u64 l = fread( buffer + current, 1, VG_FILE_IO_CHUNK_SIZE, f );
current += l;
}
}
- buffer = vg_linear_resize( lin_alloc, buffer, vg_align8(current) );
+ if( lin_alloc )
+ buffer = vg_linear_resize( lin_alloc, buffer, vg_align8(current) );
+ else
+ buffer = realloc( buffer, vg_align8(current) );
+
fclose( f );
*size = (u32)current;
return buffer;
}
else{
- vg_error( "vg_disk_open_read: %s\n", strerror(errno) );
+ vg_error( "vg_disk_open_read: %s (file: %s)\n", strerror(errno), path );
return NULL;
}
}
/* read entire file and append a null on the end */
-VG_STATIC char *vg_file_read_text( void *lin_alloc, const char *path, u32 *sz )
-{
+static char *vg_file_read_text( void *lin_alloc, const char *path, u32 *sz ){
u32 size;
char *str = vg_file_read( lin_alloc, path, &size );
return NULL;
/* include null terminator */
- str = vg_linear_extend( lin_alloc, str, 1 );
+ if( lin_alloc )
+ str = vg_linear_extend( lin_alloc, str, 1 );
+ else
+ str = realloc( str, size+1 );
+
str[ size ] = '\0';
*sz = size+1;
}
-VG_STATIC int vg_asset_write( const char *path, void *data, i64 size ){
+static int vg_asset_write( const char *path, void *data, i64 size ){
FILE *f = fopen( path, "wb" );
if( f ){
fwrite( data, size, 1, f );
}
/* TODO: error handling if read fails */
-VG_STATIC int vg_file_copy( const char *src, const char *dst, void *lin_alloc )
+static int vg_file_copy( const char *src, const char *dst, void *lin_alloc )
{
vg_info( "vg_file_copy( %s -> %s )\n", src, dst );
u32 size;
return vg_asset_write( dst, data, size );
}
-VG_STATIC const char *vg_path_filename( const char *path )
+static const char *vg_path_filename( const char *path )
{
const char *base = path;
return base;
}
+#ifdef __GNUC__
+ #ifndef __clang__
+ #pragma GCC pop_options
+ #pragma GCC diagnostic pop
+ #endif
+#endif
+
#endif /* VG_IO_H */