* UCW Library -- Fast Buffered I/O on Sockets with Timeouts
*
* (c) 2008 Martin Mares <mj@ucw.cz>
+ * (c) 2017 Pavel Charvat <pchar@ucw.cz>
*
* This software may be freely distributed and used according to the terms
* of the GNU Lesser General Public License.
*/
-#include "ucw/lib.h"
-#include "ucw/fastbuf.h"
-#include "ucw/fb-socket.h"
+#include <ucw/lib.h>
+#include <ucw/fastbuf.h>
+#include <ucw/fb-socket.h>
#include <stdio.h>
#include <unistd.h>
byte buf[0];
};
-#define FB_SOCK(f) ((struct fb_sock *)(f)->is_fastbuf)
+#define FB_SOCK(f) ((struct fb_sock *)(f))
static int
fbs_refill(struct fastbuf *f)
.events = POLLOUT,
};
- int l = f->bptr - f->buffer;
- f->bptr = f->buffer;
- char *buf = f->buffer;
+ int l = f->bptr - f->bstop;
+ f->bptr = f->bstop;
+ f->pos += l;
+ char *buf = f->bstop;
while (l)
{
static void
fbs_close(struct fastbuf *f)
{
- close(FB_SOCK(f)->par.fd);
+ if (!FB_SOCK(f)->par.fd_is_shared)
+ close(FB_SOCK(f)->par.fd);
xfree(f);
}
f->spout = fbs_spout;
f->close = fbs_close;
f->can_overwrite_buffer = 1;
- fb_tie(f);
return f;
}
#include <stdlib.h>
-static void test_err(void *x UNUSED, uns flags, char *msg UNUSED)
+static void test_err(void *x UNUSED, uint flags, char *msg UNUSED)
{
if (flags & FBSOCK_READ)
printf("READ");