From d99edf57d84baaecf99a21b0fc80c128da5ad147 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josef=20S=C3=B6ntgen?= Date: Thu, 12 Jul 2012 13:32:09 +0200 Subject: [PATCH] libports: add _accept, _bind and _listen... ...and socketpair() dummy to libc. Socketpair() is needed by OpenSSH. The actual implementation should be done in libc_noux. Fixes #297. --- libports/src/lib/libc/dummies.cc | 1 + libports/src/lib/libc/file_operations.cc | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/libports/src/lib/libc/dummies.cc b/libports/src/lib/libc/dummies.cc index 4abc1fcf5..78293a0fe 100644 --- a/libports/src/lib/libc/dummies.cc +++ b/libports/src/lib/libc/dummies.cc @@ -125,6 +125,7 @@ DUMMY(-1, _sigprocmask) DUMMY(-1, sigprocmask) DUMMY(-1, _sigsuspend) DUMMY(-1, sigsuspend) +DUMMY(-1, socketpair) DUMMY(-1, stat) DUMMY(-1, statfs) DUMMY(-1, symlink) diff --git a/libports/src/lib/libc/file_operations.cc b/libports/src/lib/libc/file_operations.cc index 82176f583..c2036e368 100644 --- a/libports/src/lib/libc/file_operations.cc +++ b/libports/src/lib/libc/file_operations.cc @@ -91,6 +91,12 @@ inline File_descriptor *libc_fd_to_fd(int libc_fd, const char *func_name) ** Libc functions ** ********************/ +extern "C" int _accept(int libc_fd, struct sockaddr *addr, socklen_t *addrlen) +{ + return accept(libc_fd, addr, addrlen); +} + + extern "C" int accept(int libc_fd, struct sockaddr *addr, socklen_t *addrlen) { File_descriptor *fd = libc_fd_to_fd(libc_fd, "accept"); @@ -99,6 +105,13 @@ extern "C" int accept(int libc_fd, struct sockaddr *addr, socklen_t *addrlen) } +extern "C" int _bind(int libc_fd, const struct sockaddr *addr, + socklen_t addrlen) +{ + return bind(libc_fd, addr, addrlen); +} + + extern "C" int bind(int libc_fd, const struct sockaddr *addr, socklen_t addrlen) { FD_FUNC_WRAPPER(bind, libc_fd, addr, addrlen); } @@ -256,6 +269,12 @@ extern "C" int _ioctl(int libc_fd, int request, char *argp) { FD_FUNC_WRAPPER(ioctl, libc_fd, request, argp); } +extern "C" int _listen(int libc_fd, int backlog) +{ + return listen(libc_fd, backlog); +} + + extern "C" int listen(int libc_fd, int backlog) { FD_FUNC_WRAPPER(listen, libc_fd, backlog); }