Code

Merge remote-tracking branch 'github/pr/387'
[collectd.git] / src / utils_tail.c
index eaf8f738d71e163d628fdfca13f0f32c3678c3a1..0b31262d630d0a4ec14826e8f0094bf6be54531a 100644 (file)
@@ -162,6 +162,7 @@ int cu_tail_readline (cu_tail_t *obj, char *buf, int buflen)
 
   /* Try to read from the filehandle. If that succeeds, everything appears to
    * be fine and we can return. */
+  clearerr (obj->fh);
   if (fgets (buf, buflen, obj->fh) != NULL)
   {
     buf[buflen - 1] = 0;
@@ -219,6 +220,8 @@ int cu_tail_read (cu_tail_t *obj, char *buf, int buflen, tailfunc_t *callback,
 
        while (42)
        {
+               size_t len;
+
                status = cu_tail_readline (obj, buf, buflen);
                if (status != 0)
                {
@@ -231,6 +234,14 @@ int cu_tail_read (cu_tail_t *obj, char *buf, int buflen, tailfunc_t *callback,
                if (buf[0] == 0)
                        break;
 
+               len = strlen (buf);
+               while (len > 0) {
+                       if (buf[len - 1] != '\n')
+                               break;
+                       buf[len - 1] = '\0';
+                       len--;
+               }
+
                status = callback (data, buf, buflen);
                if (status != 0)
                {