aboutsummaryrefslogtreecommitdiff
path: root/tool_src/BspLib/BspTool.cpp
diff options
context:
space:
mode:
authorFelix Morgner <felix.morgner@gmail.com>2026-08-24 11:16:07 +0200
committerFelix Morgner <felix.morgner@gmail.com>2026-08-24 11:16:07 +0200
commitc068f22329d5cc722622a2183bbb22eef2093df7 (patch)
tree12d56c1aede67988a55e241364606bfbb4dba933 /tool_src/BspLib/BspTool.cpp
downloadopenparsec-main.tar.xz
openparsec-main.zip
initial importHEADmain
Diffstat (limited to 'tool_src/BspLib/BspTool.cpp')
-rw-r--r--tool_src/BspLib/BspTool.cpp68
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
+
+//-----------------------------------------------------------------------------