Private endpoints are stored in per-user directories that are created
when the uipc module is loaded. However, the mode and ownership that
the directory is created with may be incorrect, depending on the mode
of the parent directory.
This commit modifies the uipc module so that endpoints are not created
in per-user directories, and moves the necessary directory creation
code to the Makefile, where it will be executed during installation.
mkdir -p $(DESTDIR)/$(PREFIX)/share/toolbox
mkdir -p $(DESTDIR)/$(PREFIX)/bin
mkdir -p $(DESTDIR)/var/lib/toolbox/ipc/{pub,priv,pubsub}
- mkdir -p $(DESTDIR)/var/lib/toolbox/uipc
+ mkdir -p $(DESTDIR)/var/lib/toolbox/uipc/{pub,priv,pubsub}
chmod -R g+rwxs $(DESTDIR)/var/lib/toolbox/ipc
+ chmod -R g+rwxs $(DESTDIR)/var/lib/toolbox/uipc
cp toolbox.sh $(DESTDIR)/$(PREFIX)/share/toolbox/.
cp -r include $(DESTDIR)/$(PREFIX)/share/toolbox/.
cp -r utils $(DESTDIR)/$(PREFIX)/share/toolbox/.
fi
declare -gxr __uipc_root="/var/lib/toolbox/uipc"
- declare -gxr __uipc_public="$__uipc_root/pub"
- declare -gxr __uipc_private="$__uipc_root/priv/$USER"
- declare -gxr __uipc_group="toolbox_ipc"
declare -gxr __uipc_pubsub_root="$__uipc_root/pubsub"
declare -gxir __uipc_version=1
- if ! mkdir -p "$__uipc_private" ||
- ! chgrp "$__uipc_group" "$__uipc_private"; then
- log_error "Could not initialize private UIPC directory $__uipc_private"
- return 1
- fi
-
return 0
}
local self
self="${0##*/}"
- name="priv/$USER/$self.$$.$(date +"%s").$RANDOM"
+ name="priv/$USER.$self.$$.$(date +"%s").$RANDOM"
fi
endpoint="$__uipc_root/$name"