1 #include "gameserver.h"
3 /* read entire binary file */
4 static void *sl_file_read( const char *path
, u32
*size
){
5 FILE *f
= fopen( path
, "rb" );
7 void *buffer
= malloc(0);
11 for( u32 i
=0; 1; i
++ ){
12 buffer
= realloc( buffer
, current
+VG_FILE_IO_CHUNK_SIZE
);
13 u64 l
= fread( buffer
+ current
, 1, VG_FILE_IO_CHUNK_SIZE
, f
);
15 if( l
!= VG_FILE_IO_CHUNK_SIZE
){
22 vg_fatal_error( "read error" );
26 vg_fatal_error( "unknown error codition" );
32 buffer
= realloc( buffer
, vg_align8(current
) );
39 vg_error( "vg_disk_open_read: %s\n", strerror(errno
) );
44 /* read entire file and append a null on the end */
45 static char *sl_file_read_text( const char *path
, u32
*sz
){
47 char *str
= sl_file_read( path
, &size
);
52 /* include null terminator */
53 str
= realloc( str
, size
+1 );
60 static void sideload( const char *folder
){
63 vg_strnull( &str
, buf
, 4096 );
64 vg_strcat( &str
, folder
);
65 vg_strcat( &str
, "/users.csv" );
68 char *data
= sl_file_read_text( buf
, &sz
);
69 char *_c
= data
, *lstart
= NULL
;
82 sscanf( lstart
, "%lu,%s", &steamid
, uname
);
83 for( int i
=0; i
<48; i
++ ){
84 if( uname
[i
] == '\0' ) break;
85 if( uname
[i
] < ' ' || uname
[i
] > '~' ) uname
[i
] = '?';
88 db_updateuser( steamid
, uname
, 1 );
97 "sr002-local-mp_mtzero:Megapark Green",
98 "sr002-local-mp_mtzero:Megapark Blue",
99 "sr002-local-mp_mtzero:Megapark Yellow",
100 "sr002-local-mp_mtzero:Megapark Red",
101 "sr002-local-mp_mtzero:Coastal Run",
102 "sr002-local-mp_mtzero:Docks Jumps",
105 for( int i
=0; i
<6; i
++ ){
107 sprintf( fn
, "%s/00%d-track.csv", folder
,i
);
109 data
= sl_file_read_text( fn
, &sz
);
110 _c
= data
, lstart
= NULL
;
115 if( lstart
== NULL
){
124 sscanf( lstart
, "%d,%d,%d,%lu", &id
, &s0
, &score
, &steamid
);
126 db_writeusertime( names
[i
], steamid
, score
, 1 );