diff options
Diffstat (limited to 'src/libstddjb/mininetstring_read.c')
-rw-r--r-- | src/libstddjb/mininetstring_read.c | 43 |
1 files changed, 0 insertions, 43 deletions
diff --git a/src/libstddjb/mininetstring_read.c b/src/libstddjb/mininetstring_read.c deleted file mode 100644 index 34f7a75..0000000 --- a/src/libstddjb/mininetstring_read.c +++ /dev/null @@ -1,43 +0,0 @@ -/* ISC license. */ - -#include <errno.h> -#include <skalibs/allreadwrite.h> -#include <skalibs/stralloc.h> -#include <skalibs/mininetstring.h> - -int mininetstring_read (int fd, stralloc *sa, uint32_t *w) -{ - if (!*w) - { - char pack[2] ; - switch (fd_read(fd, pack, 2)) - { - case -1 : return -1 ; - case 0 : return 0 ; - case 1 : *w = ((uint32_t)pack[0] << 8) | (1U << 31) ; break ; - case 2 : *w = ((uint32_t)pack[0] << 8) | (uint32_t)pack[1] | (1U << 30) ; break ; - default : return (errno = EDOM, -1) ; - } - } - if (*w & (1U << 31)) - { - unsigned char c ; - switch (fd_read(fd, (char *)&c, 1)) - { - case -1 : return -1 ; - case 0 : return (errno = EPIPE, -1) ; - case 1 : *w |= (uint32_t)c | (1U << 30) ; *w &= ~(1U << 31) ; break ; - default : return (errno = EDOM, -1) ; - } - } - if (*w & (1U << 30)) - { - if (!stralloc_readyplus(sa, *w & ~(1U << 30))) return -1 ; - *w &= ~(1U << 30) ; - } - { - size_t r = allread(fd, sa->s + sa->len, *w) ; - sa->len += r ; *w -= r ; - } - return *w ? -1 : 1 ; -} |