diff options
| author | Felix Morgner <felix.morgner@gmail.com> | 2026-08-24 11:16:07 +0200 |
|---|---|---|
| committer | Felix Morgner <felix.morgner@gmail.com> | 2026-08-24 11:16:07 +0200 |
| commit | c068f22329d5cc722622a2183bbb22eef2093df7 (patch) | |
| tree | 12d56c1aede67988a55e241364606bfbb4dba933 /tool_src/BspLib/BspTool.cpp | |
| download | openparsec-main.tar.xz openparsec-main.zip | |
Diffstat (limited to 'tool_src/BspLib/BspTool.cpp')
| -rw-r--r-- | tool_src/BspLib/BspTool.cpp | 68 |
1 files changed, 68 insertions, 0 deletions
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 + +//----------------------------------------------------------------------------- |
