]> de.git.xonotic.org Git - xonotic/netradiant.git/blobdiff - radiant/build.cpp
do not remember game was switched when selected at startup, <3 @Garux
[xonotic/netradiant.git] / radiant / build.cpp
index 6462e382ab66aa3f61ccdadb2cfca67fdcead48d..d9d4e404531404314a941d492454364f9c6abcb5 100644 (file)
@@ -76,6 +76,53 @@ void setString( const char* string ){
        m_string = string;
 }
 void evaluate( StringBuffer& output ){
+       #if !(GDEF_OS_WINDOWS)
+       // strip .[ExecutableType] entirely (including preceding dot) on Mac and Linux
+       {
+               StringBuffer output;
+               StringBuffer variable;
+               bool found_dot = false;
+               bool in_variable = false;
+               for (const char *i = m_string.c_str(); *i != '\0'; ++i) {
+                       if (!found_dot && !in_variable) {
+                               switch (*i) {
+                                       case '.':
+                                               found_dot = true;
+                                               break;
+                                       default:
+                                               output.push_back(*i);
+                                               break;
+                               }
+                       } else if (found_dot && !in_variable) {
+                               switch (*i) {
+                                       case '[':
+                                               in_variable = true;
+                                               break;
+                                       default:
+                                               found_dot = false;
+                                               output.push_back(*i);
+                                               break;
+                               }
+                       } else {
+                               switch (*i) {
+                                       case ']':
+                                               found_dot = false;
+                                               in_variable = false;
+                                               if ( strncmp("ExecutableType", variable.c_str(), sizeof(variable.c_str())) == 0 ) {
+                                                       output.push_string("");
+                                                       variable.clear();
+                                               }
+                                               break;
+                                       default:
+                                               variable.push_back(*i);
+                                               break;
+                               }
+                       }
+               }
+               setString(output.c_str());
+       }
+       #endif // !(GDEF_OS_WINDOWS)
+
        StringBuffer variable;
        bool in_variable = false;
        for ( const char* i = m_string.c_str(); *i != '\0'; ++i )