mirror of
https://github.com/jart/cosmopolitan.git
synced 2025-07-02 09:18:31 +00:00
Implement syslog (#136)
This commit is contained in:
parent
83abd68029
commit
6682013d12
50 changed files with 535 additions and 89 deletions
|
@ -47,16 +47,15 @@
|
|||
*/
|
||||
ssize_t sendto(int fd, const void *buf, size_t size, uint32_t flags,
|
||||
const void *opt_addr, uint32_t addrsize) {
|
||||
assert(sizeof(struct sockaddr_in) == sizeof(struct sockaddr_in_bsd));
|
||||
if (!IsWindows()) {
|
||||
if (!IsBsd() || !opt_addr) {
|
||||
return sys_sendto(fd, buf, size, flags, opt_addr, addrsize);
|
||||
} else {
|
||||
struct sockaddr_in_bsd addr2;
|
||||
if (addrsize != sizeof(addr2)) return einval();
|
||||
memcpy(&addr2, opt_addr, sizeof(struct sockaddr_in));
|
||||
sockaddr2bsd(&addr2);
|
||||
return sys_sendto(fd, buf, size, flags, &addr2, addrsize);
|
||||
char addr2[sizeof(struct sockaddr_un_bsd)]; /* sockaddr_un_bsd is the largest */
|
||||
if (addrsize > sizeof(addr2)) return einval();
|
||||
memcpy(&addr2, opt_addr, addrsize);
|
||||
sockaddr2bsd(&addr2[0]);
|
||||
return sys_sendto(fd, buf, size, flags, &addr2[0], addrsize);
|
||||
}
|
||||
} else if (__isfdkind(fd, kFdSocket)) {
|
||||
return sys_sendto_nt(&g_fds.p[fd], (struct iovec[]){{buf, size}}, 1, flags,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue