* Arguments: @const char *name@ = socket name to create
* @uid_t u@ = user to own the socket
* @gid_t g@ = group to own the socket
+ * @mode_t m@ = permissions to set on the socket
*
* Returns: ---
*
* Use: Creates the admin listening socket.
*/
-void a_init(const char *name, uid_t u, gid_t g)
+void a_init(const char *name, uid_t u, gid_t g, mode_t m)
{
int fd;
int n = 5;
close(fd);
goto again;
}
- if (chmod(sun.sun_path, 0600)) {
- die(EXIT_FAILURE, "failed to set socket permissions: %s",
- strerror(errno));
- }
if (chown(sun.sun_path, u, g)) {
die(EXIT_FAILURE, "failed to set socket owner: %s",
strerror(errno));
}
+ if (chmod(sun.sun_path, m)) {
+ die(EXIT_FAILURE, "failed to set socket permissions: %s",
+ strerror(errno));
+ }
umask(omask);
fdflags(fd, O_NONBLOCK, O_NONBLOCK, FD_CLOEXEC, FD_CLOEXEC);
if (listen(fd, 5))