mirror of
https://github.com/alsa-project/alsa-lib.git
synced 2025-12-17 08:56:45 -05:00
Types size fixes
This commit is contained in:
parent
a01c8f0d03
commit
6f66416685
3 changed files with 26 additions and 23 deletions
|
|
@ -65,7 +65,7 @@ typedef struct {
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
long result;
|
long result;
|
||||||
long cookie;
|
int cookie;
|
||||||
} snd_client_open_answer_t;
|
} snd_client_open_answer_t;
|
||||||
|
|
||||||
struct cmsg_fd
|
struct cmsg_fd
|
||||||
|
|
|
||||||
|
|
@ -110,36 +110,40 @@ int make_inet_socket(int port)
|
||||||
int send_fd(int socket, void *data, size_t len, int fd)
|
int send_fd(int socket, void *data, size_t len, int fd)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
struct cmsg_fd cmsg;
|
size_t cmsg_len = CMSG_LEN(sizeof(int));
|
||||||
|
struct cmsghdr *cmsg = alloca(cmsg_len);
|
||||||
|
int *fds = (int *) CMSG_DATA(cmsg);
|
||||||
struct msghdr msghdr;
|
struct msghdr msghdr;
|
||||||
struct iovec vec;
|
struct iovec vec;
|
||||||
|
|
||||||
vec.iov_base = (void *)&data;
|
vec.iov_base = (void *)&data;
|
||||||
vec.iov_len = len;
|
vec.iov_len = len;
|
||||||
|
|
||||||
cmsg.len = sizeof(cmsg);
|
cmsg->cmsg_len = cmsg_len;
|
||||||
cmsg.level = SOL_SOCKET;
|
cmsg->cmsg_level = SOL_SOCKET;
|
||||||
cmsg.type = SCM_RIGHTS;
|
cmsg->cmsg_type = SCM_RIGHTS;
|
||||||
cmsg.fd = fd;
|
*fds = fd;
|
||||||
|
|
||||||
msghdr.msg_name = NULL;
|
msghdr.msg_name = NULL;
|
||||||
msghdr.msg_namelen = 0;
|
msghdr.msg_namelen = 0;
|
||||||
msghdr.msg_iov = &vec;
|
msghdr.msg_iov = &vec;
|
||||||
msghdr.msg_iovlen = 1;
|
msghdr.msg_iovlen = 1;
|
||||||
msghdr.msg_control = &cmsg;
|
msghdr.msg_control = cmsg;
|
||||||
msghdr.msg_controllen = sizeof(cmsg);
|
msghdr.msg_controllen = cmsg_len;
|
||||||
msghdr.msg_flags = 0;
|
msghdr.msg_flags = 0;
|
||||||
|
|
||||||
ret = sendmsg(socket, &msghdr, 0 );
|
ret = sendmsg(socket, &msghdr, 0 );
|
||||||
if (ret < 0)
|
if (ret < 0) {
|
||||||
|
perrno("sendmsg");
|
||||||
return -errno;
|
return -errno;
|
||||||
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
typedef struct client client_t;
|
typedef struct client client_t;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
int (*open)(client_t *client, long *cookie);
|
int (*open)(client_t *client, int *cookie);
|
||||||
int (*cmd)(client_t *client);
|
int (*cmd)(client_t *client);
|
||||||
int (*close)(client_t *client);
|
int (*close)(client_t *client);
|
||||||
int (*poll_prepare)(client_t *client, struct pollfd *pfds, int pindex);
|
int (*poll_prepare)(client_t *client, struct pollfd *pfds, int pindex);
|
||||||
|
|
@ -198,7 +202,7 @@ struct client {
|
||||||
client_t clients[CLIENTS_MAX];
|
client_t clients[CLIENTS_MAX];
|
||||||
int clients_count = 0;
|
int clients_count = 0;
|
||||||
|
|
||||||
int pcm_shm_open(client_t *client, long *cookie)
|
int pcm_shm_open(client_t *client, int *cookie)
|
||||||
{
|
{
|
||||||
int shmid;
|
int shmid;
|
||||||
snd_pcm_t *pcm;
|
snd_pcm_t *pcm;
|
||||||
|
|
@ -566,8 +570,6 @@ void snd_client_open(client_t *client)
|
||||||
}
|
}
|
||||||
|
|
||||||
_answer:
|
_answer:
|
||||||
ans.result = htonl(ans.result);
|
|
||||||
ans.cookie = htonl(ans.cookie);
|
|
||||||
err = write(client->ctrl.fd, &ans, sizeof(ans));
|
err = write(client->ctrl.fd, &ans, sizeof(ans));
|
||||||
if (err != sizeof(ans)) {
|
if (err != sizeof(ans)) {
|
||||||
perrno("write");
|
perrno("write");
|
||||||
|
|
|
||||||
|
|
@ -51,30 +51,32 @@ typedef struct {
|
||||||
int receive_fd(int socket, void *data, size_t len, int *fd)
|
int receive_fd(int socket, void *data, size_t len, int *fd)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
struct cmsg_fd cmsg;
|
size_t cmsg_len = CMSG_LEN(sizeof(int));
|
||||||
|
struct cmsghdr *cmsg = alloca(cmsg_len);
|
||||||
|
int *fds = (int *) CMSG_DATA(cmsg);
|
||||||
struct msghdr msghdr;
|
struct msghdr msghdr;
|
||||||
struct iovec vec;
|
struct iovec vec;
|
||||||
|
|
||||||
vec.iov_base = (void *)&data;
|
vec.iov_base = (void *)&data;
|
||||||
vec.iov_len = len;
|
vec.iov_len = len;
|
||||||
|
|
||||||
cmsg.len = sizeof(cmsg);
|
cmsg->cmsg_len = cmsg_len;
|
||||||
cmsg.level = SOL_SOCKET;
|
cmsg->cmsg_level = SOL_SOCKET;
|
||||||
cmsg.type = SCM_RIGHTS;
|
cmsg->cmsg_type = SCM_RIGHTS;
|
||||||
cmsg.fd = -1;
|
*fds = -1;
|
||||||
|
|
||||||
msghdr.msg_name = NULL;
|
msghdr.msg_name = NULL;
|
||||||
msghdr.msg_namelen = 0;
|
msghdr.msg_namelen = 0;
|
||||||
msghdr.msg_iov = &vec;
|
msghdr.msg_iov = &vec;
|
||||||
msghdr.msg_iovlen = 1;
|
msghdr.msg_iovlen = 1;
|
||||||
msghdr.msg_control = &cmsg;
|
msghdr.msg_control = cmsg;
|
||||||
msghdr.msg_controllen = sizeof(cmsg);
|
msghdr.msg_controllen = cmsg_len;
|
||||||
msghdr.msg_flags = 0;
|
msghdr.msg_flags = 0;
|
||||||
|
|
||||||
ret = recvmsg(socket, &msghdr, 0);
|
ret = recvmsg(socket, &msghdr, 0);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
return -errno;
|
return -errno;
|
||||||
*fd = cmsg.fd;
|
*fd = *fds;
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -782,8 +784,7 @@ int snd_pcm_client_create(snd_pcm_t **handlep, char *host, int port, int transpo
|
||||||
result = -EINVAL;
|
result = -EINVAL;
|
||||||
goto _err;
|
goto _err;
|
||||||
}
|
}
|
||||||
result = ntohl(ans.result);
|
result = ans.result;
|
||||||
ans.cookie = ntohl(ans.cookie);
|
|
||||||
if (result < 0)
|
if (result < 0)
|
||||||
goto _err;
|
goto _err;
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue