NetBSD-Bugs archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: misc/38993: the macros CMSG_DATA &c. should be documented
The following reply was made to PR misc/38993; it has been noted by GNATS.
From: Taylor R Campbell <campbell%mumble.net@localhost>
To: gnats-bugs%NetBSD.org@localhost
Cc:
Subject: Re: misc/38993: the macros CMSG_DATA &c. should be documented
Date: Sun, 3 May 2009 12:40:48 -0400
Except for some slightly confusing example code, the requested man
page has been added and this PR can probably be closed.
I think that the code would be a little clearer if rather than
declaring a union with an array component of dynamic size using sizeof
to refer to the size size, it simply used:
char *cmsgbuf;
size_t cmsgsize = CMSG_SPACE(sizeof(int));
if ((cmsgbuf = malloc(cmsgsize)) == NULL)
err(1, "malloc");
(void)memset(&msg, 0, sizeof(msg));
msg.msg_control = cmsgbuf;
msg.msg_controllen = cmsgsize;
Since the buffer is allocated with malloc, writing a union with a
struct cmsghdr component doesn't add anything to the alignment already
guaranteed by malloc. The union is a vestige of a stack-allocated
buffer, which might without the union be unaligned. The code without
any union is also conciser.
Home |
Main Index |
Thread Index |
Old Index