From fde6e56d503c17aee64db5af081048e01a5069b4 Mon Sep 17 00:00:00 2001 From: XANTRONIX Development Date: Wed, 15 Jul 2015 20:32:24 -0500 Subject: [PATCH] Separate buffering method <3 --- src/kiss.c | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/src/kiss.c b/src/kiss.c index 7d6c19a..79a92ca 100644 --- a/src/kiss.c +++ b/src/kiss.c @@ -67,10 +67,8 @@ void patty_kiss_tnc_close(patty_kiss_tnc *tnc) { free(tnc); } -ssize_t patty_kiss_tnc_recv(patty_kiss_tnc *tnc, void **frame, int *port) { +static ssize_t tnc_buffer(patty_kiss_tnc *tnc) { size_t fillsz = tnc->bufsz - tnc->buflen; - size_t i, b; - int flags = KISS_NONE; /* * If the buffer needs to be filled, then fill it. @@ -88,6 +86,20 @@ ssize_t patty_kiss_tnc_recv(patty_kiss_tnc *tnc, void **frame, int *port) { tnc->buflen += readlen; } + return tnc->buflen; + +error_io: + return -1; +} + +ssize_t patty_kiss_tnc_recv(patty_kiss_tnc *tnc, void **frame, int *port) { + size_t i, b; + int flags = KISS_NONE; + + if (tnc_buffer(tnc) < 0) { + goto error_io; + } + /* * Initialize the frame to be returned to the caller. */