From 34cda1cb940ce0bfa606a52d1834c717e82af8ec Mon Sep 17 00:00:00 2001 From: hzcheng Date: Mon, 6 Apr 2020 10:13:34 +0800 Subject: [PATCH] TD-100 --- src/os/linux/src/tlinux.c | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/src/os/linux/src/tlinux.c b/src/os/linux/src/tlinux.c index 780e2903a0..b819514be7 100644 --- a/src/os/linux/src/tlinux.c +++ b/src/os/linux/src/tlinux.c @@ -291,6 +291,30 @@ int taosInitTimer(void (*callback)(int), int ms) { return 0; } +ssize_t tread(int fd, void *buf, size_t count) { + size_t leftbytes = count; + ssize_t readbytes; + char * tbuf = (char *)buf; + + while (leftbytes > 0) { + readbytes = read(fd, (void *)tbuf, leftbytes); + if (readbytes < 0) { + if (errno == EINTR) { + continue; + } else { + return -1; + } + } else if (readbytes == 0) { + return (ssize_t)(count - leftbytes); + } + + leftbytes -= readbytes; + tbuf += readbytes; + } + + return (ssize_t)count; +} + ssize_t tsendfile(int dfd, int sfd, off_t *offset, size_t size) { size_t leftbytes = size; ssize_t sentbytes; @@ -308,6 +332,8 @@ ssize_t tsendfile(int dfd, int sfd, off_t *offset, size_t size) { else { return -1; } + } else if (sentbytes == 0) { + return (ssize_t)(size - leftbytes); } leftbytes -= sentbytes;