Upstream version 8.37.186.0
[platform/framework/web/crosswalk.git] / src / xwalk / application / tools / linux / xwalk_launcher_tizen.cc
index cb51dce..f7a83c0 100644 (file)
@@ -2,12 +2,14 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include <glib.h>
 #include <stdio.h>
 #include <string.h>
 #include <stdlib.h>
-#if defined(OS_TIZEN_MOBILE)
 #include <appcore/appcore-common.h>
-#endif
+#include <pkgmgr-info.h>
+
+#include "xwalk/application/common/id_util.h"
 #include "xwalk/application/tools/linux/xwalk_launcher_tizen.h"
 
 enum app_event {
@@ -70,3 +72,21 @@ int xwalk_appcore_init(int argc, char** argv, const char* name) {
 
   return appcore_init(name, &appcore_ops, argc, argv);
 }
+
+int xwalk_change_cmdline(int argc, char** argv, const char* app_id) {
+  // Change /proc/<pid>/cmdline to app exec path. See XWALK-1722 for details.
+  pkgmgrinfo_appinfo_h handle;
+  char* exec_path = NULL;
+  if (pkgmgrinfo_appinfo_get_appinfo(app_id, &handle) != PMINFO_R_OK ||
+      pkgmgrinfo_appinfo_get_exec(handle, &exec_path) != PMINFO_R_OK ||
+      !exec_path) {
+    fprintf(stderr, "Couldn't find exec path for application: %s\n", app_id);
+    return -1;
+  }
+
+  for (int i = 0; i < argc; ++i)
+    memset(argv[i], 0, strlen(argv[i]));
+  strncpy(argv[0], exec_path, strlen(exec_path)+1);
+  pkgmgrinfo_appinfo_destroy_appinfo(handle);
+  return 0;
+}