From c068f22329d5cc722622a2183bbb22eef2093df7 Mon Sep 17 00:00:00 2001 From: Felix Morgner Date: Mon, 24 Aug 2026 11:16:07 +0200 Subject: initial import --- tool_src/BspLib/BspTool.cpp | 68 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 tool_src/BspLib/BspTool.cpp (limited to 'tool_src/BspLib/BspTool.cpp') diff --git a/tool_src/BspLib/BspTool.cpp b/tool_src/BspLib/BspTool.cpp new file mode 100644 index 0000000..23bcb8d --- /dev/null +++ b/tool_src/BspLib/BspTool.cpp @@ -0,0 +1,68 @@ +//----------------------------------------------------------------------------- +// BSPLIB MODULE: BspTool.cpp +// +// Copyright (c) 1997 by Markus Hadwiger +// All Rights Reserved. +//----------------------------------------------------------------------------- + +// bsplib header files +#include "BspTool.h" + +// flags +#define STRIP_PATH + + +BSPLIB_NAMESPACE_BEGIN + + +// create new string with altered extension ----------------------------------- +// +String BspTool::ChangeExtension( const char *filename, const char *extension ) +{ + if ( ( filename == NULL ) || ( extension == NULL ) ) + return String( NULL ); + + int len = strlen( filename ); + int pos = len; + char *name = NULL; + const char *scan = filename + pos; + + while ( ( --pos > 0 ) && ( *--scan != '.' ) ) ; + + if ( pos > 0 ) { + // change extension if there was an extension + name = new char[ pos + strlen( extension ) + 1 ]; + strncpy( name, filename, pos ); + strcpy( name + pos, extension ); + } else { + // append new extension if there was no extension + name = new char[ len + strlen( extension ) + 1 ]; + strcpy( name, filename ); + strcpy( name + len, extension ); + } + +#ifdef STRIP_PATH + String ret( SkipPath( name ) ); +#else + String ret( name ); +#endif + + delete name; + return ret; +} + + +// create filename without path ----------------------------------------------- +// +const String BspTool::SkipPath( const char *fullname ) +{ + const char *scan = fullname + strlen( fullname ) - 1; + while ( ( *scan != '\\' ) && ( *scan != ':' ) && ( scan >= fullname ) ) + scan--; + return String( scan + 1 ); +} + + +BSPLIB_NAMESPACE_END + +//----------------------------------------------------------------------------- -- cgit v1.2.3