/* utils.c - Useful helper functions Copyright (C) 2020 Andrey Akhmichin This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. */ #include #include #include #include #include "xash3d_types.h" #include "port.h" #include "crtlib.h" #include "utils.h" /* ============ MakeDirectory ============ */ qboolean MakeDirectory( const char *path ) { struct stat st; if( -1 == _mkdir( path ) && ( -1 == stat( path, &st ) || !S_ISDIR(st.st_mode ) ) ) return false; return true; } /* ============ GetFileSize ============ */ off_t GetSizeOfFile( FILE *fp ) { struct stat st; int fd; fd = fileno( fp ); fstat( fd, &st ); return st.st_size; } /* ============ LoadFile ============ */ byte *LoadFile( const char *filename ) { FILE *fp; byte *buf; off_t size; fp = fopen( filename, "rb" ); if( !fp ) return NULL; size = GetSizeOfFile( fp ); buf = malloc( size ); if( !buf ) return NULL; fread( buf, size, 1, fp ); fclose( fp ); return buf; }