changeset 30754:dff9ee89b7c1

Move stream_read_line implementation from stream.h to stream.c, it is not speed critical and the function call overhead is not relevant for its overall speed anyway.
author reimar
date Sun, 28 Feb 2010 13:54:55 +0000
parents 7c412873705e
children 4e654b2e4517
files stream/stream.c stream/stream.h
diffstat 2 files changed, 27 insertions(+), 26 deletions(-) [+]
line wrap: on
line diff
--- a/stream/stream.c	Sun Feb 28 12:54:12 2010 +0000
+++ b/stream/stream.c	Sun Feb 28 13:54:55 2010 +0000
@@ -487,3 +487,29 @@
     if(!stream_check_interrupt_cb) return 0;
     return stream_check_interrupt_cb(time);
 }
+
+unsigned char* stream_read_line(stream_t *s,unsigned char* mem, int max) {
+  int len;
+  unsigned char* end,*ptr = mem;
+  if (max < 1) return NULL;
+  max--; // reserve one for 0-termination
+  do {
+    len = s->buf_len-s->buf_pos;
+    // try to fill the buffer
+    if(len <= 0 &&
+       (!cache_stream_fill_buffer(s) ||
+        (len = s->buf_len-s->buf_pos) <= 0)) break;
+    end = (unsigned char*) memchr((void*)(s->buffer+s->buf_pos),'\n',len);
+    if(end) len = end - (s->buffer+s->buf_pos) + 1;
+    if(len > 0 && max > 0) {
+      int l = len > max ? max : len;
+      memcpy(ptr,s->buffer+s->buf_pos,l);
+      max -= l;
+      ptr += l;
+    }
+    s->buf_pos += len;
+  } while(!end);
+  if(s->eof && ptr == mem) return NULL;
+  ptr[0] = 0;
+  return mem;
+}
--- a/stream/stream.h	Sun Feb 28 12:54:12 2010 +0000
+++ b/stream/stream.h	Sun Feb 28 13:54:55 2010 +0000
@@ -265,32 +265,7 @@
   return total;
 }
 
-inline static unsigned char* stream_read_line(stream_t *s,unsigned char* mem, int max) {
-  int len;
-  unsigned char* end,*ptr = mem;
-  if (max < 1) return NULL;
-  max--; // reserve one for 0-termination
-  do {
-    len = s->buf_len-s->buf_pos;
-    // try to fill the buffer
-    if(len <= 0 &&
-       (!cache_stream_fill_buffer(s) ||
-        (len = s->buf_len-s->buf_pos) <= 0)) break;
-    end = (unsigned char*) memchr((void*)(s->buffer+s->buf_pos),'\n',len);
-    if(end) len = end - (s->buffer+s->buf_pos) + 1;
-    if(len > 0 && max > 0) {
-      int l = len > max ? max : len;
-      memcpy(ptr,s->buffer+s->buf_pos,l);
-      max -= l;
-      ptr += l;
-    }
-    s->buf_pos += len;
-  } while(!end);
-  if(s->eof && ptr == mem) return NULL;
-  ptr[0] = 0;
-  return mem;
-}
-
+unsigned char* stream_read_line(stream_t *s,unsigned char* mem, int max);
 
 inline static int stream_eof(stream_t *s){
   return s->eof;