Browse Source

texturev: Added Linux file association.

Branimir Karadžić 9 năm trước cách đây
mục cha
commit
8cf12291f4
1 tập tin đã thay đổi với 29 bổ sung15 xóa
  1. 29 15
      tools/texturev/texturev.cpp

+ 29 - 15
tools/texturev/texturev.cpp

@@ -444,20 +444,6 @@ void help(const char* _error = NULL)
 		);
 		);
 }
 }
 
 
-std::string replaceAll(const std::string& _str, const char* _from, const char* _to)
-{
-	std::string str = _str;
-	size_t startPos = 0;
-	const size_t fromLen = strlen(_from);
-	const size_t toLen   = strlen(_to);
-	while ( (startPos = str.find(_from, startPos) ) != std::string::npos)
-	{
-		str.replace(startPos, fromLen, _to);
-		startPos += toLen;
-	}
-	return str;
-}
-
 void associate()
 void associate()
 {
 {
 #if BX_PLATFORM_WINDOWS
 #if BX_PLATFORM_WINDOWS
@@ -466,7 +452,7 @@ void associate()
 	char exec[MAX_PATH];
 	char exec[MAX_PATH];
 	GetModuleFileNameA(GetModuleHandleA(NULL), exec, MAX_PATH);
 	GetModuleFileNameA(GetModuleHandleA(NULL), exec, MAX_PATH);
 
 
-	std::string strExec = replaceAll(exec, "\\", "\\\\");
+	std::string strExec = bx::replaceAll(exec, "\\", "\\\\");
 
 
 	std::string value;
 	std::string value;
 	bx::stringPrintf(value, "@=\"\\\"%s\\\" \\\"%%1\\\"\"\r\n\r\n", strExec.c_str() );
 	bx::stringPrintf(value, "@=\"\\\"%s\\\" \\\"%%1\\\"\"\r\n\r\n", strExec.c_str() );
@@ -513,6 +499,34 @@ void associate()
 			}
 			}
 		}
 		}
 	}
 	}
+#elif BX_PLATFORM_LINUX
+	std::string str;
+	str += "#/bin/bash\n\n";
+
+	for (uint32_t ii = 0; ii < BX_COUNTOF(s_supportedExt); ++ii)
+	{
+		const char* ext = s_supportedExt[ii];
+		bx::stringPrintf(str, "xdg-mime default texturev.desktop image/%s\n", ext);
+	}
+
+	str += "\n";
+
+	bx::CrtFileWriter writer;
+	bx::Error err;
+	if (bx::open(&writer, "/tmp/texturev.sh", false, &err) )
+	{
+		bx::write(&writer, str.c_str(), str.length(), &err);
+		bx::close(&writer);
+
+		if (err.isOk() )
+		{
+			bx::ProcessReader reader;
+			if (bx::open(&reader, "/bin/bash /tmp/texturev.sh", &err) )
+			{
+				bx::close(&reader);
+			}
+		}
+	}
 #endif // BX_PLATFORM_WINDOWS
 #endif // BX_PLATFORM_WINDOWS
 }
 }