From ed63a7f875c4cf0440a88078b24c48ee85cc8259 Mon Sep 17 00:00:00 2001 From: Fredrik Tolf Date: Tue, 26 Feb 2008 18:01:20 +0100 Subject: [PATCH] Ported the qcmdqueue structure to the fnet-adc as well. --- daemon/fnet-adc.c | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/daemon/fnet-adc.c b/daemon/fnet-adc.c index 5c609f8..19141a2 100644 --- a/daemon/fnet-adc.c +++ b/daemon/fnet-adc.c @@ -58,6 +58,11 @@ struct qcmd { wchar_t **args; }; +struct qcmdqueue { + struct qcmd *f, *l; + int size; +}; + struct adchub { struct socket *sk; char *inbuf; @@ -69,7 +74,7 @@ struct adchub { iconv_t ich; int state; struct wcspair *hubinf; - struct qcmd *queue; + struct qcmdqueue queue; }; static wchar_t *eoc; @@ -163,26 +168,31 @@ static void sendadc(struct socket *sk, int sep, ...) va_end(args); } -static struct qcmd *newqcmd(struct qcmd **queue, wchar_t **args) +static struct qcmd *newqcmd(struct qcmdqueue *queue, wchar_t **args) { struct qcmd *new; - while(*queue != NULL) - queue = &((*queue)->next); new = smalloc(sizeof(*new)); new->next = NULL; new->args = args; - *queue = new; + if(queue->l == NULL) + queue->f = new; + else + queue->l->next = new; + queue->l = new; + queue->size++; return(new); } -static struct qcmd *ulqcmd(struct qcmd **queue) +static struct qcmd *ulqcmd(struct qcmdqueue *queue) { struct qcmd *ret; - if((ret = *queue) == NULL) + if((ret = queue->f) == NULL) return(NULL); - *queue = ret->next; + if((queue->f = ret->next) == NULL) + queue->l = NULL; + queue->size--; return(ret); } -- 2.11.0