19 #include <sys/types.h> 20 #include <sys/socket.h> 53 ret = recv (fd, buffer, len, 0);
67 return send (fd, buffer, len, 0);
77 struct sockaddr_un saddr;
80 fd = socket (AF_UNIX, SOCK_STREAM, 0);
85 saddr.sun_family = AF_UNIX;
86 snprintf (saddr.sun_path,
sizeof(saddr.sun_path),
"/%s", url->
path);
88 if (connect (fd, (
struct sockaddr *) &saddr,
sizeof (saddr)) == -1) {
93 flags = fcntl (fd, F_GETFL, 0);
102 flags = fcntl (fd, F_SETFL, flags);
122 struct sockaddr_un sin;
127 sin_len =
sizeof (sin);
129 fd = accept (transport->
fd, (
struct sockaddr *)&sin, &sin_len);
134 flags = fcntl (fd, F_GETFL, 0);
143 flags = fcntl (fd, F_SETFL, flags);
168 struct sockaddr_un saddr;
171 fd = socket (AF_UNIX, SOCK_STREAM, 0);
176 saddr.sun_family = AF_UNIX;
177 snprintf (saddr.sun_path, sizeof (saddr.sun_path),
"/%s", url->
path);
179 if (access (saddr.sun_path, F_OK) == 0) {
180 if (connect (fd, (
struct sockaddr *) &saddr,
sizeof (saddr)) != -1) {
186 unlink (saddr.sun_path);
189 if (bind (fd, (
struct sockaddr *) &saddr,
sizeof (saddr)) == -1) {
196 flags = fcntl (fd, F_GETFL, 0);
205 flags = fcntl (fd, F_SETFL, flags);
#define x_return_val_if_fail(expr, val)
xmms_ipc_transport_t * xmms_ipc_usocket_client_init(const xmms_url_t *url)
xmms_ipc_write_func write_func
xmms_ipc_destroy_func destroy_func
xmms_ipc_transport_t * xmms_ipc_usocket_server_init(const xmms_url_t *url)
xmms_ipc_accept_func accept_func
#define x_new0(type, num)
xmms_ipc_read_func read_func