#include <linux/limits.h>
#include <pthread.h>
-#include <storage.h>
#include <vconf.h>
#include <app_common.h>
+#include <tzplatform_config.h>
#include <Ecore.h>
#define _unused(x) ((void)(x))
-struct sigaction sig_abrt_new;
-struct sigaction sig_abrt_old;
+static struct sigaction sig_abrt_new;
+static struct sigaction sig_abrt_old;
static bool checkOnSigabrt = false;
static bool checkOnTerminate = false;
}
}
-static bool storage_cb(int id, storage_type_e type, storage_state_e state, const char *path, void *user_data)
-{
- int* tmp = (int*)user_data;
- if (type == STORAGE_TYPE_INTERNAL)
- {
- *tmp = id;
- return false;
- }
-
- return true;
-}
-
-static void setSpecialFolder(storage_directory_e type, const char* key)
-{
- int error;
- char* path = NULL;
- static int __storageId = -1;
-
- if (__storageId < 0) {
- error = storage_foreach_device_supported(storage_cb, &__storageId);
- if (error != STORAGE_ERROR_NONE) {
- return;
- }
- }
-
- error = storage_get_directory(__storageId, type, &path);
- if (error == STORAGE_ERROR_NONE && path != NULL) {
- setenv(key, const_cast<char *>(path), 1);
- free(path);
- }
-}
-
static void initEnvForSpecialFolder()
{
+ const char* path = NULL;
if (getenv("XDG_PICTURES_DIR") == NULL) {
- setSpecialFolder(STORAGE_DIRECTORY_IMAGES, "XDG_PICTURES_DIR");
+ path = tzplatform_getenv(TZ_USER_IMAGES);
+ if (path) {
+ setenv("XDG_PICTURES_DIR", path, 1);
+ }
}
if (getenv("XDG_MUSIC_DIR") == NULL) {
- setSpecialFolder(STORAGE_DIRECTORY_MUSIC, "XDG_MUSIC_DIR");
+ path = tzplatform_getenv(TZ_USER_MUSIC);
+ if (path) {
+ setenv("XDG_MUSIC_DIR", path, 1);
+ }
}
if (getenv("XDG_VIDEOS_DIR") == NULL) {
- setSpecialFolder(STORAGE_DIRECTORY_VIDEOS, "XDG_VIDEOS_DIR");
+ path = tzplatform_getenv(TZ_USER_VIDEOS);
+ if (path) {
+ setenv("XDG_VIDEOS_DIR", path, 1);
+ }
}
}
return -1;
}
- // Intiailize ecore first (signal handlers, etc.) before runtime init.
- ecore_init();
-
// set language environment to support ICU
setLang();
// Disable config cache to set environment after coreclr_initialize()
putenv(const_cast<char *>("COMPlus_DisableConfigCache=1"));
+ // Set environment variable for System.Environment.SpecialFolder
+ initEnvForSpecialFolder();
+
// read string from external file and set them to environment value.
setEnvFromFile();
__pm->setExtraDllPaths(pluginExtraDllPaths);
}
- pluginHasLogControl();
-
std::string libCoreclr(concatPath(__pm->getRuntimePath(), "libcoreclr.so"));
__coreclrLib = dlopen(libCoreclr.c_str(), RTLD_NOW | RTLD_LOCAL);
_INFO("libcoreclr dlopen and dlsym success");
- // Set environment for System.Environment.SpecialFolder
- // Below function creates dbus connection by callging storage API.
- // If dbus connection is created bofere fork(), forked process cannot use dbus.
- // To avoid gdbus blocking issue, below function should be called after fork()
- initEnvForSpecialFolder();
-
std::string tpa;
char* pluginTPA = pluginGetTPA();
if (pluginTPA && pluginTPA[0] != '\0') {
return -1;
}
+ // VD has their own signal handler.
+ if (!pluginHasLogControl()) {
+ registerSigHandler();
+ }
+
int st = createDelegate(__hostHandle, __domainId, "Tizen.Runtime", "Tizen.Runtime.Environment", "SetEnvironmentVariable", (void**)&setEnvironmentVariable);
if (st < 0 || setEnvironmentVariable == nullptr) {
_ERR("Create delegate for Tizen.Runtime.dll -> Tizen.Runtime.Environment -> SetEnvironmentVariable failed (0x%08x)", st);
return -1;
}
- // VD has their own signal handler.
- if (!pluginHasLogControl()) {
- registerSigHandler();
- }
-
pluginSetAppInfo(appId, path);
// temporal root path is overrided to real application root path