#include <fcntl.h>
#include <unistd.h>
#include <sys/types.h>
+#include <pwd.h>
#include <sys/inotify.h>
#include "contacts.h"
}
}
+static const char* __ctsvc_inotify_get_username(uid_t uid)
+{
+ struct passwd pwd;
+ struct passwd *pwd_result;
+ char tmp[CTSVC_STR_SHORT_LEN];
+
+ int ret = getpwuid_r(uid, &pwd, tmp, sizeof(tmp), &pwd_result);
+ if (ret != 0 || pwd_result == NULL) {
+ ERR("getpwuid_r() fail");
+ return "";
+ }
+
+ return SAFE_STRDUP(pwd.pw_name);
+}
+
+
char* ctsvc_inotify_makepath(const char *file)
{
RETV_IF(NULL == file, NULL);
- static int user_id_max = 10;
+ static int user_name_max = 32;
int path_len = 0;
char *path = NULL;
uid_t uid = getuid();
+ const char *user_name = NULL;
#ifdef _CONTACTS_IPC_CLIENT
if (ctsvc_client_is_in_system_session()) {
}
#endif
- path_len = strlen(CTSVC_NOTI_PATH) + user_id_max + strlen(file) + 1;
+ path_len = strlen(CTSVC_NOTI_PATH) + user_name_max + strlen(file) + 1;
path = calloc(1, path_len);
if (NULL == path) {
ERR("calloc() fail");
return NULL;
}
- snprintf(path, path_len, CTSVC_NOTI_PATH"/%s", uid, file);
- DBG("%s", path);
+ user_name = __ctsvc_inotify_get_username(uid);
+ if (user_name) {
+ snprintf(path, path_len, CTSVC_NOTI_PATH"/%s", user_name, file);
+ } else {
+ ERR("__ctsvc_inotify_get_username() fail");
+ free(path);
+ return NULL;
+ }
+
+ free(user_name);
return path;
}
#define CTS_LOGO_IMAGE_LOCATION tzplatform_mkpath(TZ_USER_DATA, "contacts-svc/img/logo")
#define CTSVC_CONTACT_IMG_FULL_LOCATION tzplatform_mkpath(TZ_USER_DATA, "contacts-svc/img/contact")
-#define CTSVC_NOTI_PATH "/run/user_ext/%d/contacts-svc"
+#define CTSVC_NOTI_PATH "/opt/usr/home/%s/data/contacts-svc"
#define CTSVC_NOTI_IPC_READY ".CONTACTS_SVC_IPC_READY"
#define CTSVC_NOTI_ADDRESSBOOK_CHANGED ".CONTACTS_SVC_AB_CHANGED"
#define CTSVC_NOTI_GROUP_CHANGED ".CONTACTS_SVC_GROUP_CHANGED"
Name: contacts-service
Summary: Contacts Service
-Version: 0.13.69
+Version: 0.13.70
Release: 0
Group: Social & Content/Service
License: Apache-2.0
free(path);
}
-
-void __ctsvc_create_noti_rep_set_permission(mode_t mode)
-{
- char path[CTSVC_PATH_MAX_LEN] = {0};
- snprintf(path, CTSVC_PATH_MAX_LEN, CTSVC_NOTI_PATH, getuid());
-
- if (-1 == access(path, F_OK))
- mkdir(path, mode);
-}
-
-
int main(int argc, char *argv[])
{
CTS_FN_CALL;
INFO("Start contacts-service");
- setenv("GCOV_PREFIX", "/tmp/server", 1);
int ret;
if (getuid() == 0) { /* root */
__ctsvc_create_rep_set_permission(CTS_LOGO_IMAGE_LOCATION, 0750);
__ctsvc_create_rep_set_permission(CTSVC_CONTACT_IMG_FULL_LOCATION, 0750);
- __ctsvc_create_noti_rep_set_permission(0755);
__ctsvc_create_noti_file_set_permission(CTSVC_NOTI_IPC_READY, CTS_SECURITY_DEFAULT_PERMISSION);
__ctsvc_create_noti_file_set_permission(CTSVC_NOTI_ADDRESSBOOK_CHANGED, CTS_SECURITY_DEFAULT_PERMISSION);
__ctsvc_create_noti_file_set_permission(CTSVC_NOTI_GROUP_CHANGED, CTS_SECURITY_DEFAULT_PERMISSION);