rdline: don't display prompt if stopped by user
[libcmdline.git] / src / lib / cmdline_cirbuf.c
index f8ef1f0..4046947 100644 (file)
@@ -1,3 +1,37 @@
+/*-
+ * Copyright (c) <2010>, Intel Corporation
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ *
+ * - Redistributions in binary form must reproduce the above copyright
+ *   notice, this list of conditions and the following disclaimer in
+ *   the documentation and/or other materials provided with the
+ *   distribution.
+ *
+ * - Neither the name of Intel Corporation nor the names of its
+ *   contributors may be used to endorse or promote products derived
+ *   from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+ * OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
 /*
  * Copyright (c) 2009, Olivier MATZ <zer0@droids-corp.org>
  * All rights reserved.
@@ -58,10 +92,13 @@ cirbuf_add_buf_head(struct cirbuf *cbuf, const char *c, unsigned int n)
                memcpy(cbuf->buf + cbuf->start - n + e, c, n);
        }
        else {
-               dprintf("s[%d] -> d[%d] (%d)\n", + n - (cbuf->start + e), 0, cbuf->start + e);
-               dprintf("s[%d] -> d[%d] (%d)\n", cbuf->maxlen - n + (cbuf->start + e), 0, n - (cbuf->start + e));
+               dprintf("s[%d] -> d[%d] (%d)\n", + n - (cbuf->start + e), 0,
+                       cbuf->start + e);
+               dprintf("s[%d] -> d[%d] (%d)\n", cbuf->maxlen - n +
+                       (cbuf->start + e), 0, n - (cbuf->start + e));
                memcpy(cbuf->buf, c  + n - (cbuf->start + e) , cbuf->start + e);
-               memcpy(cbuf->buf + cbuf->maxlen - n + (cbuf->start + e), c, n - (cbuf->start + e));
+               memcpy(cbuf->buf + cbuf->maxlen - n + (cbuf->start + e), c,
+                      n - (cbuf->start + e));
        }
        cbuf->len += n;
        cbuf->start += (cbuf->maxlen - n + e);
@@ -86,10 +123,14 @@ cirbuf_add_buf_tail(struct cirbuf *cbuf, const char *c, unsigned int n)
                memcpy(cbuf->buf + cbuf->end + !e, c, n);
        }
        else {
-               dprintf("s[%d] -> d[%d] (%d)\n", cbuf->end + !e, 0, cbuf->maxlen - cbuf->end - 1 + e);
-               dprintf("s[%d] -> d[%d] (%d)\n", cbuf->maxlen - cbuf->end - 1 + e, 0, n - cbuf->maxlen + cbuf->end + 1 - e);
-               memcpy(cbuf->buf + cbuf->end + !e, c, cbuf->maxlen - cbuf->end - 1 + e);
-               memcpy(cbuf->buf, c + cbuf->maxlen - cbuf->end - 1 + e, n - cbuf->maxlen + cbuf->end + 1 - e);
+               dprintf("s[%d] -> d[%d] (%d)\n", cbuf->end + !e, 0,
+                       cbuf->maxlen - cbuf->end - 1 + e);
+               dprintf("s[%d] -> d[%d] (%d)\n", cbuf->maxlen - cbuf->end - 1 +
+                       e, 0, n - cbuf->maxlen + cbuf->end + 1 - e);
+               memcpy(cbuf->buf + cbuf->end + !e, c, cbuf->maxlen -
+                      cbuf->end - 1 + e);
+               memcpy(cbuf->buf, c + cbuf->maxlen - cbuf->end - 1 + e,
+                      n - cbuf->maxlen + cbuf->end + 1 - e);
        }
        cbuf->len += n;
        cbuf->end += n - e;
@@ -321,7 +362,9 @@ cirbuf_del_tail(struct cirbuf * cbuf)
 int
 cirbuf_get_buf_head(struct cirbuf *cbuf, char *c, unsigned int size)
 {
-       unsigned int n = (size < CIRBUF_GET_LEN(cbuf)) ? size : CIRBUF_GET_LEN(cbuf);
+       unsigned int n;
+
+       n = (size < CIRBUF_GET_LEN(cbuf)) ? size : CIRBUF_GET_LEN(cbuf);
 
        if (!n)
                return 0;
@@ -331,10 +374,13 @@ cirbuf_get_buf_head(struct cirbuf *cbuf, char *c, unsigned int size)
                memcpy(c, cbuf->buf + cbuf->start , n);
        }
        else {
-               dprintf("s[%d] -> d[%d] (%d)\n", cbuf->start, 0, cbuf->maxlen - cbuf->start);
-               dprintf("s[%d] -> d[%d] (%d)\n", 0, cbuf->maxlen - cbuf->start, n - cbuf->maxlen + cbuf->start);
+               dprintf("s[%d] -> d[%d] (%d)\n", cbuf->start, 0,
+                       cbuf->maxlen - cbuf->start);
+               dprintf("s[%d] -> d[%d] (%d)\n", 0,cbuf->maxlen - cbuf->start,
+                       n - cbuf->maxlen + cbuf->start);
                memcpy(c, cbuf->buf + cbuf->start , cbuf->maxlen - cbuf->start);
-               memcpy(c + cbuf->maxlen - cbuf->start, cbuf->buf, n - cbuf->maxlen + cbuf->start);
+               memcpy(c + cbuf->maxlen - cbuf->start, cbuf->buf,
+                      n - cbuf->maxlen + cbuf->start);
        }
        return n;
 }
@@ -344,7 +390,9 @@ cirbuf_get_buf_head(struct cirbuf *cbuf, char *c, unsigned int size)
 int
 cirbuf_get_buf_tail(struct cirbuf *cbuf, char *c, unsigned int size)
 {
-       unsigned int n = (size < CIRBUF_GET_LEN(cbuf)) ? size : CIRBUF_GET_LEN(cbuf);
+       unsigned int n;
+
+       n = (size < CIRBUF_GET_LEN(cbuf)) ? size : CIRBUF_GET_LEN(cbuf);
 
        if (!n)
                return 0;
@@ -354,11 +402,15 @@ cirbuf_get_buf_tail(struct cirbuf *cbuf, char *c, unsigned int size)
                memcpy(c, cbuf->buf + cbuf->end - n + 1, n);
        }
        else {
-               dprintf("s[%d] -> d[%d] (%d)\n", 0,  cbuf->maxlen - cbuf->start, cbuf->end + 1);
-               dprintf("s[%d] -> d[%d] (%d)\n", cbuf->maxlen - n + cbuf->end + 1, 0, n - cbuf->end - 1);
-
-               memcpy(c + cbuf->maxlen - cbuf->start, cbuf->buf, cbuf->end + 1);
-               memcpy(c, cbuf->buf + cbuf->maxlen - n + cbuf->end +1, n - cbuf->end - 1);
+               dprintf("s[%d] -> d[%d] (%d)\n", 0,
+                       cbuf->maxlen - cbuf->start, cbuf->end + 1);
+               dprintf("s[%d] -> d[%d] (%d)\n",
+                       cbuf->maxlen - n + cbuf->end + 1, 0, n - cbuf->end - 1);
+
+               memcpy(c + cbuf->maxlen - cbuf->start,
+                      cbuf->buf, cbuf->end + 1);
+               memcpy(c, cbuf->buf + cbuf->maxlen - n + cbuf->end +1,
+                      n - cbuf->end - 1);
        }
        return n;
 }