*
*/
+#include <stdio.h>
#include "ua-internal.h"
#include "ua-manager-common.h"
#include "ua-manager-core.h"
#include <cynara-creds-gdbus.h>
#include <aul.h>
+#define MAX_BUFFER_SIZE 256
+
extern GMainLoop *main_loop;
/* For maintaining Application Sync API call requests */
return UAM_ERROR_NONE;
}
+static int __uam_get_process_name_bypid(const int pid, char *proc_name, int len)
+{
+ char name[MAX_BUFFER_SIZE] = { 0, };
+ snprintf(name, MAX_BUFFER_SIZE, "/proc/%d/cmdline", pid);
+ UAM_DBG("open file %s", name);
+ FILE* f = fopen(name, "r");
+ if (f) {
+ size_t size;
+ size = fread(proc_name, sizeof(char), len, f);
+ if (size > 0) {
+ if ('\n' == proc_name[size-1])
+ proc_name[size-1] = '\0';
+ }
+ fclose(f);
+ }
+ UAM_DBG("process name %s", proc_name);
+ return UAM_ERROR_NONE;
+}
+
static int __uam_get_sender_app_id(const char *unique_name, char *app_id, int len)
{
int ret;
ret = aul_app_get_appid_bypid(pid, app_id, len);
if (ret != AUL_R_OK) {
- UAM_DBG("app_id not found");
- return UAM_ERROR_NOT_FOUND;
+ UAM_DBG("app_id not found, Check process name");
+
+ ret = __uam_get_process_name_bypid(pid, app_id, len);
+ if (ret != UAM_ERROR_NONE) {
+ UAM_DBG("process name not found");
+ return UAM_ERROR_NOT_FOUND;
+ }
}
UAM_DBG("Sender app_id: %s", app_id);
{
FUNC_ENTRY;
int ret = UAM_ERROR_NONE;
- char app_id[256] = { 0, };
+ char app_id[MAX_BUFFER_SIZE] = { 0, };
UAM_DBG("Sender %s", sender);
case UAM_REQUEST_START_LOCATION_DETECTION: {
const char *svc_name;
unsigned int sensors;
-
+
__uam_manager_copy_params(in_param1,
&sensors, sizeof(unsigned int));
svc_name = (char *)g_variant_get_data(in_param2);
-
+
result = _uam_core_start_location_detection(svc_name,
sender, sensors, app_num);
break;
case UAM_REQUEST_STOP_LOCATION_DETECTION: {
unsigned int sensors;
const char *svc_name;
-
+
__uam_manager_copy_params(in_param1,
&sensors, sizeof(unsigned int));
svc_name = (char *)g_variant_get_data(in_param2);
-
+
result = _uam_core_stop_location_detection(svc_name,
sender, sensors, app_num);
break;