Cross Reference: unix-socket-create.c
xref
: /
dovecot
/
src
/
lib
/
unix-socket-create.c
Home
History
Annotate
Line#
Navigate
Download
Search
only in
./
unix-socket-create.c revision 66bcc2a2f65576211f2f55edbe61130b96287fcd
/* Copyright (c) 2005 Timo Sirainen */
#
include
"
lib.h
"
#
include
"
network.h
"
#
include
"
unix-socket-create.h
"
#
include
<
unistd.h
>
#
include
<
sys
/
stat.h
>
int
unix_socket_create
(
const
char
*
path
,
int
mode
,
uid_t
uid
,
gid_t
gid
,
int
backlog
)
{
mode_t
old_umask
;
int
fd
;
(
void
)
unlink
(
path
);
old_umask
=
umask
(0
777
^
mode
);
fd
=
net_listen_unix
(
path
,
backlog
);
umask
(
old_umask
);
if
(
fd
< 0) {
i_error
(
"net_listen_unix(%s) failed: %m"
,
path
);
return
-
1
;
}
if
(
uid
!= (
uid_t
)-
1
||
gid
!= (
gid_t
)-
1
) {
/* set correct permissions */
if
(
chown
(
path
,
uid
,
gid
) < 0) {
i_error
(
"chown(%s, %s, %s) failed: %m"
,
path
,
dec2str
(
uid
),
dec2str
(
gid
));
return
-
1
;
}
}
return
fd
;
}