X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=libs%2Fshttpd%2Fio_socket.c;fp=libs%2Fshttpd%2Fio_socket.c;h=9e2b73edc4ca2e179e6d241dae7e6f511be49dab;hb=d8ccfe2b3944adf07d35534459cdda19d15217c8;hp=0000000000000000000000000000000000000000;hpb=21f835f30b4e092c847bf4569a00995774f7330e;p=fms.git diff --git a/libs/shttpd/io_socket.c b/libs/shttpd/io_socket.c new file mode 100644 index 0000000..9e2b73e --- /dev/null +++ b/libs/shttpd/io_socket.c @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2004-2005 Sergey Lyubka + * All rights reserved + * + * "THE BEER-WARE LICENSE" (Revision 42): + * Sergey Lyubka wrote this file. As long as you retain this notice you + * can do whatever you want with this stuff. If we meet some day, and you think + * this stuff is worth it, you can buy me a beer in return. + */ + +#include "defs.h" + +static int +read_socket(struct stream *stream, void *buf, size_t len) +{ + assert(stream->chan.sock != -1); + return (recv(stream->chan.sock, buf, len, 0)); +} + +static int +write_socket(struct stream *stream, const void *buf, size_t len) +{ + assert(stream->chan.sock != -1); + return (send(stream->chan.sock, buf, len, 0)); +} + +static void +close_socket(struct stream *stream) +{ + assert(stream->chan.sock != -1); + (void) closesocket(stream->chan.sock); +} + +const struct io_class io_socket = { + "socket", + read_socket, + write_socket, + close_socket +};