return -1;
}
-static int
+static void
_tdm_socket_init(tdm_private_loop *private_loop)
{
const char *dir = NULL;
uid_t uid;
gid_t gid;
- if (wl_display_add_socket(private_loop->wl_display, "tdm-socket")) {
- TDM_ERR("createing a tdm-socket failed");
- return 0;
- }
-
dir = getenv("XDG_RUNTIME_DIR");
if (!dir) {
- TDM_ERR("getting XDG_RUNTIME_DIR failed");
- return 0;
+ TDM_WRN("getting XDG_RUNTIME_DIR failed");
+ return;
}
snprintf(socket_path, sizeof(socket_path), "%s/%s", dir, "tdm-socket");
ret = chmod(socket_path, 509);
if (ret < 0) {
- TDM_ERR("changing modes of socket file failed:%s (%m)", socket_path);
- return 0;
+ TDM_WRN("changing modes of socket file failed:%s (%m)", socket_path);
+ return;
}
- /* if not super user, we don't need to change owner and group */
- if (getuid() != 0)
- return 1;
-
ret = _tdm_getgrnam_r("root");
if (ret < 0) {
- TDM_ERR("getting uid failed");
- return 0;
+ TDM_WRN("getting uid failed");
+ return;
}
uid = ret;
ret = _tdm_getgrnam_r("display");
if (ret < 0) {
- TDM_ERR("getting gid failed");
- return 0;
+ TDM_WRN("getting gid failed");
+ return;
}
gid = ret;
ret = chown(socket_path, uid, gid);
if (ret < 0) {
- TDM_ERR("changing owner of socket file failed:%s (%m)", socket_path);
- return 0;
+ TDM_WRN("changing owner of socket file failed:%s (%m)", socket_path);
+ return;
}
-
- return 1;
}
INTERN tdm_error
if (private_loop->private_server)
return TDM_ERROR_NONE;
- if (!_tdm_socket_init(private_loop)) {
- TDM_ERR("initializing tdm-socket failed");
+ if (wl_display_add_socket(private_loop->wl_display, "tdm-socket")) {
+ TDM_ERR("createing a tdm-socket failed");
return TDM_ERROR_OPERATION_FAILED;
}
+ _tdm_socket_init(private_loop);
+
private_server = calloc(1, sizeof * private_server);
if (!private_server) {
TDM_ERR("alloc failed");