Implement syslog (#136)

This commit is contained in:
fabriziobertocci 2021-04-01 22:32:39 -04:00 committed by GitHub
parent 83abd68029
commit 6682013d12
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
50 changed files with 535 additions and 89 deletions

View file

@ -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,