]> jfr.im git - irc/rqf/shadowircd.git/blobdiff - libratbox/src/linebuf.c
Specify RTLD_LOCAL explicitly.
[irc/rqf/shadowircd.git] / libratbox / src / linebuf.c
index 613e3b29225bc2ac3de90ce7010d4f63e00bffa4..a6c05f3ce694c08691421bbb286d2bcd95bc7506 100644 (file)
@@ -21,7 +21,7 @@
  *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301
  *  USA
  *
- *  $Id: linebuf.c 25038 2008-01-23 16:03:08Z androsyn $
+ *  $Id: linebuf.c 25375 2008-05-16 15:19:51Z androsyn $
  */
 
 #include <libratbox_config.h>
@@ -368,7 +368,6 @@ rb_linebuf_parse(buf_head_t * bufhead, char *data, int len, int raw)
        {
                /* Check we're doing the partial buffer thing */
                bufline = bufhead->list.tail->data;
-               lrb_assert(!bufline->flushing);
                /* just try, the worst it could do is *reject* us .. */
                if(!raw)
                        cpylen = rb_linebuf_copy_line(bufhead, bufline, data, len);
@@ -548,13 +547,13 @@ rb_linebuf_putmsg(buf_head_t * bufhead, const char *format, va_list * va_args, c
        bufline->terminated = 1;
 
        /* Truncate the data if required */
-       if(unlikely(len > 510))
+       if(rb_unlikely(len > 510))
        {
                len = 510;
                bufline->buf[len++] = '\r';
                bufline->buf[len++] = '\n';
        }
-       else if(unlikely(len == 0))
+       else if(rb_unlikely(len == 0))
        {
                bufline->buf[len++] = '\r';
                bufline->buf[len++] = '\n';
@@ -594,19 +593,19 @@ rb_linebuf_putbuf(buf_head_t *bufhead, const char *buffer)
        /* Create a new line */
        bufline = rb_linebuf_new_line(bufhead);
 
-       if(unlikely(buffer != NULL))
+       if(rb_unlikely(buffer != NULL))
                len = rb_strlcpy(bufline->buf, buffer, BUF_DATA_SIZE);
 
        bufline->terminated = 1;
 
        /* Truncate the data if required */
-       if(unlikely(len > 510))
+       if(rb_unlikely(len > 510))
        {
                len = 510;
                bufline->buf[len++] = '\r';
                bufline->buf[len++] = '\n';
        }
-       else if(unlikely(len == 0))
+       else if(rb_unlikely(len == 0))
        {
                bufline->buf[len++] = '\r';
                bufline->buf[len++] = '\n';
@@ -649,7 +648,7 @@ rb_linebuf_put(buf_head_t * bufhead, const char *format, ...)
        /* Create a new line */
        bufline = rb_linebuf_new_line(bufhead);
 
-       if(unlikely(format != NULL))
+       if(rb_unlikely(format != NULL))
        {
                va_start(args, format);
                len = rb_vsnprintf(bufline->buf, BUF_DATA_SIZE, format, args);
@@ -659,13 +658,13 @@ rb_linebuf_put(buf_head_t * bufhead, const char *format, ...)
        bufline->terminated = 1;
 
        /* Truncate the data if required */
-       if(unlikely(len > 510))
+       if(rb_unlikely(len > 510))
        {
                len = 510;
                bufline->buf[len++] = '\r';
                bufline->buf[len++] = '\n';
        }
-       else if(unlikely(len == 0))
+       else if(rb_unlikely(len == 0))
        {
                bufline->buf[len++] = '\r';
                bufline->buf[len++] = '\n';
@@ -739,12 +738,9 @@ rb_linebuf_flush(rb_fde_t *F, buf_head_t * bufhead)
 
                }
 
-               if(bufline->flushing)
-               {
-                       vec[x].iov_base = bufline->buf + bufhead->writeofs;
-                       vec[x++].iov_len = bufline->len - bufhead->writeofs;
-                       ptr = ptr->next;
-               }
+               vec[x].iov_base = bufline->buf + bufhead->writeofs;
+               vec[x++].iov_len = bufline->len - bufhead->writeofs;
+               ptr = ptr->next;
 
                do
                {
@@ -777,29 +773,18 @@ rb_linebuf_flush(rb_fde_t *F, buf_head_t * bufhead)
                {
                        bufline = ptr->data;
 
-                       if(bufline->flushing)
-                       {
-                               if(xret >= bufline->len - bufhead->writeofs)
-                               {
-                                       xret = xret - (bufline->len - bufhead->writeofs);
-                                       ptr = ptr->next;
-                                       rb_linebuf_done_line(bufhead, bufline, bufhead->list.head);
-                                       continue;
-                               }       
-                       }
-                       if(xret >= bufline->len) 
+                       if(xret >= bufline->len - bufhead->writeofs)
                        {
-                               xret = xret - bufline->len;
+                               xret -= bufline->len - bufhead->writeofs;
                                ptr = ptr->next;
                                rb_linebuf_done_line(bufhead, bufline, bufhead->list.head);
+                               bufhead->writeofs = 0;
                        }
                        else 
                        {
-                               bufline->flushing = 1;
-                               bufhead->writeofs = xret;
+                               bufhead->writeofs += xret;
                                break;
                        }
-                       
                }
 
                return retval;
@@ -825,13 +810,6 @@ rb_linebuf_flush(rb_fde_t *F, buf_head_t * bufhead)
                return -1;
        }
 
-       /* Check we're flushing the first buffer */
-       if(!bufline->flushing)
-       {
-               bufline->flushing = 1;
-               bufhead->writeofs = 0;
-       }
-
        /* Now, try writing data */
        retval = rb_write(F, bufline->buf + bufhead->writeofs, bufline->len - bufhead->writeofs);