aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArlo Breault <arlolra@gmail.com>2013-04-13 14:57:50 -0700
committerArlo Breault <arlolra@gmail.com>2013-04-13 14:57:50 -0700
commit2ce87cf7d9c3ce1ccb5ad13dc21d0d31599f7396 (patch)
treefa13830c4f429e42436320106e9edd9dda677615
parent3868ec7853d6fcdb7c4183b18137f10739ed8b39 (diff)
socketpair
-rw-r--r--src/library.js15
-rw-r--r--system/include/sys/socket.h1
2 files changed, 16 insertions, 0 deletions
diff --git a/src/library.js b/src/library.js
index 2e0f3afb..2e24a462 100644
--- a/src/library.js
+++ b/src/library.js
@@ -6568,6 +6568,7 @@ LibraryManager.library = {
ENOTSUP: 95,
ENOTTY: 25,
ENXIO: 6,
+ EOPNOTSUPP: 45,
EOVERFLOW: 75,
EOWNERDEAD: 130,
EPERM: 1,
@@ -6649,6 +6650,7 @@ LibraryManager.library = {
95: 'Operation not supported',
25: 'Inappropriate ioctl for device',
6: 'No such device or address',
+ 45: 'Op not supported on transport endpoint',
75: 'Value too large for defined data type',
130: 'Owner died',
1: 'Operation not permitted',
@@ -7393,6 +7395,19 @@ LibraryManager.library = {
}
},
+ socketpair__deps: ['__setErrNo', '$ERRNO_CODES', 'pipe'],
+ socketpair: function(domain, type, protocol, sv) {
+ // int socketpair(int domain, int type, int protocol, int sv[2]);
+ // http://sources.iwp9.org/files/plan9/sys/src/ape/lib/bsd/socketpair.c
+ switch (domain) {
+ case {{{ cDefine('PF_UNIX') }}}:
+ return _pipe(sv);
+ default:
+ ___setErrNo(ERRNO_CODES.EOPNOTSUPP);
+ return -1;
+ }
+ },
+
// pty.h
openpty: function() { throw 'openpty: TODO' },
diff --git a/system/include/sys/socket.h b/system/include/sys/socket.h
index 8ca6eccf..56a37375 100644
--- a/system/include/sys/socket.h
+++ b/system/include/sys/socket.h
@@ -68,6 +68,7 @@ ssize_t recv(int s, void *buf, size_t len, int flags);
ssize_t send(int s, const void *buf, size_t len, int flags);
int setsockopt(int s, int level, int optname, const void *optval, socklen_t optlen);
ssize_t sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen);
+int socketpair(int domain, int type, int protocol, int sv[2]);
struct msghdr
{