#include <string>
#include <fstream>
#include <vector>
+#include <sstream>
#include <fcntl.h>
#include <sys/stat.h>
#include "log_manager.h"
#define PLUGIN_PATH "/usr/share/dotnet.tizen/lib/libdotnet_plugin.so"
+#define ENV_FILE_PATH "/usr/share/dotnet.tizen/lib/coreclr_env.list"
namespace tizen {
namespace runtime {
return candidate;
}
+
+static std::vector<std::string> __envList;
+
+static void setEnvFromFile()
+{
+ std::string envList;
+ std::ifstream inFile(ENV_FILE_PATH);
+
+ __envList.clear();
+
+ if (inFile) {
+ _INFO("coreclr_env.list is found");
+ inFile >> envList;
+
+ std::istringstream ss(envList);
+ std::string token;
+
+ while (std::getline(ss, token, ':')) {
+ if (!token.empty()) {
+ __envList.push_back(token);
+ }
+ }
+
+ for (unsigned int i = 0; i < __envList.size(); i++) {
+ putenv(const_cast<char *>(__envList[i].c_str()));
+ }
+ } else {
+ _INFO("coreclr_env.list file is not found. skip");
+ }
+}
+
CoreRuntime::CoreRuntime(const char* mode) :
initializeClr(nullptr),
executeAssembly(nullptr),
putenv(const_cast<char *>("UNW_ARM_UNWIND_METHOD=6"));
#endif // __arm__
+ // read string from external file and set them to environment value.
+ setEnvFromFile();
+
if (initializePathManager(std::string(), std::string(), std::string()) < 0) {
_ERR("Failed to initialize PathManager");
return -1;
finalizePluginManager();
finalizePathManager();
+ __envList.clear();
+
_DBG("Dotnet runtime disposed");
}