From: Abramo Bagnara Date: Thu, 31 Aug 2000 13:31:46 +0000 (+0000) Subject: Types size fixes X-Git-Tag: v1.0.3~1151 X-Git-Url: https://git.alsa-project.org/?a=commitdiff_plain;h=6f66416685841af541c69c00e1ebb569702418ed;p=alsa-lib.git Types size fixes --- diff --git a/include/aserver.h b/include/aserver.h index 428ec286..7c477fa3 100644 --- a/include/aserver.h +++ b/include/aserver.h @@ -65,7 +65,7 @@ typedef struct { typedef struct { long result; - long cookie; + int cookie; } snd_client_open_answer_t; struct cmsg_fd diff --git a/src/aserver/aserver.c b/src/aserver/aserver.c index edc749af..f4234ab0 100644 --- a/src/aserver/aserver.c +++ b/src/aserver/aserver.c @@ -110,36 +110,40 @@ int make_inet_socket(int port) int send_fd(int socket, void *data, size_t len, int fd) { 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 iovec vec; vec.iov_base = (void *)&data; vec.iov_len = len; - cmsg.len = sizeof(cmsg); - cmsg.level = SOL_SOCKET; - cmsg.type = SCM_RIGHTS; - cmsg.fd = fd; + cmsg->cmsg_len = cmsg_len; + cmsg->cmsg_level = SOL_SOCKET; + cmsg->cmsg_type = SCM_RIGHTS; + *fds = fd; msghdr.msg_name = NULL; msghdr.msg_namelen = 0; msghdr.msg_iov = &vec; msghdr.msg_iovlen = 1; - msghdr.msg_control = &cmsg; - msghdr.msg_controllen = sizeof(cmsg); + msghdr.msg_control = cmsg; + msghdr.msg_controllen = cmsg_len; msghdr.msg_flags = 0; ret = sendmsg(socket, &msghdr, 0 ); - if (ret < 0) + if (ret < 0) { + perrno("sendmsg"); return -errno; + } return ret; } typedef struct client client_t; typedef struct { - int (*open)(client_t *client, long *cookie); + int (*open)(client_t *client, int *cookie); int (*cmd)(client_t *client); int (*close)(client_t *client); int (*poll_prepare)(client_t *client, struct pollfd *pfds, int pindex); @@ -198,7 +202,7 @@ struct client { client_t clients[CLIENTS_MAX]; int clients_count = 0; -int pcm_shm_open(client_t *client, long *cookie) +int pcm_shm_open(client_t *client, int *cookie) { int shmid; snd_pcm_t *pcm; @@ -566,8 +570,6 @@ void snd_client_open(client_t *client) } _answer: - ans.result = htonl(ans.result); - ans.cookie = htonl(ans.cookie); err = write(client->ctrl.fd, &ans, sizeof(ans)); if (err != sizeof(ans)) { perrno("write"); diff --git a/src/pcm/pcm_client.c b/src/pcm/pcm_client.c index 31069058..ed72f53a 100644 --- a/src/pcm/pcm_client.c +++ b/src/pcm/pcm_client.c @@ -51,30 +51,32 @@ typedef struct { int receive_fd(int socket, void *data, size_t len, int *fd) { 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 iovec vec; vec.iov_base = (void *)&data; vec.iov_len = len; - cmsg.len = sizeof(cmsg); - cmsg.level = SOL_SOCKET; - cmsg.type = SCM_RIGHTS; - cmsg.fd = -1; + cmsg->cmsg_len = cmsg_len; + cmsg->cmsg_level = SOL_SOCKET; + cmsg->cmsg_type = SCM_RIGHTS; + *fds = -1; msghdr.msg_name = NULL; msghdr.msg_namelen = 0; msghdr.msg_iov = &vec; msghdr.msg_iovlen = 1; - msghdr.msg_control = &cmsg; - msghdr.msg_controllen = sizeof(cmsg); + msghdr.msg_control = cmsg; + msghdr.msg_controllen = cmsg_len; msghdr.msg_flags = 0; ret = recvmsg(socket, &msghdr, 0); if (ret < 0) return -errno; - *fd = cmsg.fd; + *fd = *fds; return ret; } @@ -782,8 +784,7 @@ int snd_pcm_client_create(snd_pcm_t **handlep, char *host, int port, int transpo result = -EINVAL; goto _err; } - result = ntohl(ans.result); - ans.cookie = ntohl(ans.cookie); + result = ans.result; if (result < 0) goto _err;