From cbcb90638b5488ffee45a3a4593905421710fc7d Mon Sep 17 00:00:00 2001 From: Andrey Akhmichin <15944199+nekonomicon@users.noreply.github.com> Date: Tue, 21 Jun 2022 11:32:05 +0500 Subject: [PATCH] utils: mdldec: try to create user defined destination directory. --- utils/mdldec/mdldec.c | 6 +++--- utils/mdldec/utils.c | 16 ++++++++-------- utils/mdldec/utils.h | 4 ++-- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/utils/mdldec/mdldec.c b/utils/mdldec/mdldec.c index d902d400..c137be93 100644 --- a/utils/mdldec/mdldec.c +++ b/utils/mdldec/mdldec.c @@ -164,9 +164,9 @@ static qboolean LoadMDL( const char *modelname ) if( destdir[0] != '\0' ) { - if( !IsFileExists( destdir ) ) + if( !MakeDirectory( destdir ) ) { - fprintf( stderr, "ERROR: Couldn't find directory %s\n", destdir ); + fprintf( stderr, "ERROR: Couldn't create directory %s\n", destdir ); return false; } @@ -175,7 +175,7 @@ static qboolean LoadMDL( const char *modelname ) else COM_ExtractFilePath( modelname, destdir ); - len -= 4; // path length without extension + len -= ( sizeof( ".mdl" ) - 1 ); // path length without extension if( !model_hdr->numtextures ) { diff --git a/utils/mdldec/utils.c b/utils/mdldec/utils.c index 739390d9..3e1014cc 100644 --- a/utils/mdldec/utils.c +++ b/utils/mdldec/utils.c @@ -18,22 +18,22 @@ GNU General Public License for more details. #include #include #include "xash3d_types.h" +#include "port.h" #include "crtlib.h" #include "utils.h" /* ============ -IsFileExists +MakeDirectory ============ */ -qboolean IsFileExists( const char *filename ) +qboolean MakeDirectory( const char *path ) { struct stat st; - int ret; - ret = stat( filename, &st ); - - if( ret == -1 ) + if( -1 == _mkdir( path ) + && ( -1 == stat( path, &st ) + || !S_ISDIR(st.st_mode ) ) ) return false; return true; @@ -44,7 +44,7 @@ qboolean IsFileExists( const char *filename ) GetFileSize ============ */ -off_t GetFileSize( FILE *fp ) +off_t GetSizeOfFile( FILE *fp ) { struct stat st; int fd; @@ -71,7 +71,7 @@ byte *LoadFile( const char *filename ) if( !fp ) return NULL; - size = GetFileSize( fp ); + size = GetSizeOfFile( fp ); buf = malloc( size ); diff --git a/utils/mdldec/utils.h b/utils/mdldec/utils.h index b2e9958f..08d07202 100644 --- a/utils/mdldec/utils.h +++ b/utils/mdldec/utils.h @@ -16,8 +16,8 @@ GNU General Public License for more details. #ifndef UTILS_H #define UTILS_H -qboolean IsFileExists( const char *filename ); -off_t GetFileSize( FILE *fp ); +qboolean MakeDirectory( const char *path ); +off_t GetSizeOfFile( FILE *fp ); byte *LoadFile( const char *filename ); #endif // UTILS_H