summaryrefslogtreecommitdiffstats
path: root/source/lib/socket/socket_unix.c
diff options
context:
space:
mode:
authorAndrew Tridgell <tridge@samba.org>2005-06-03 13:20:08 +0000
committerAndrew Tridgell <tridge@samba.org>2005-06-03 13:20:08 +0000
commita003e0418774f47ceaaac5d272408244db2dfa53 (patch)
treec440158ef1e894451900c510e52f47d9b035b51b /source/lib/socket/socket_unix.c
parent6f059bfc0d1521f7ef8813d2bff2de522ee9e28f (diff)
downloadsamba-a003e0418774f47ceaaac5d272408244db2dfa53.tar.gz
samba-a003e0418774f47ceaaac5d272408244db2dfa53.tar.xz
samba-a003e0418774f47ceaaac5d272408244db2dfa53.zip
r7227: added a socket_pending() call to abstract away the FIONREAD ioctl. It
will be interesting to see if this causes any portability problems, as it is a less commonly used call.
Diffstat (limited to 'source/lib/socket/socket_unix.c')
-rw-r--r--source/lib/socket/socket_unix.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/source/lib/socket/socket_unix.c b/source/lib/socket/socket_unix.c
index 04ba89578f8..f27076b5d8a 100644
--- a/source/lib/socket/socket_unix.c
+++ b/source/lib/socket/socket_unix.c
@@ -316,6 +316,16 @@ static int unixdom_get_fd(struct socket_context *sock)
return sock->fd;
}
+static NTSTATUS unixdom_pending(struct socket_context *sock, size_t *npending)
+{
+ int value = 0;
+ if (ioctl(sock->fd, FIONREAD, &value) == 0) {
+ *npending = value;
+ return NT_STATUS_OK;
+ }
+ return map_nt_error_from_unix(errno);
+}
+
static const struct socket_ops unixdom_ops = {
.name = "unix",
.fn_init = unixdom_init,
@@ -327,6 +337,7 @@ static const struct socket_ops unixdom_ops = {
.fn_send = unixdom_send,
.fn_sendto = unixdom_sendto,
.fn_close = unixdom_close,
+ .fn_pending = unixdom_pending,
.fn_set_option = unixdom_set_option,