reader->r_off = get_next_entry(log, reader->r_off, len);
}
-static char *strnrchr(const char *s, size_t count, int c)
-{
- const char *last = NULL;
- if (!count)
- return NULL;
- do {
- if (*s == (char)c)
- last = s;
- } while (--count && *s++);
- return (char *)last;
-}
-
static struct file *replace_file(struct files_struct *files,
struct file *oldf,
struct file *newf)
max_payload - writer->b_off - 1);
do {
-
+ size_t i;
if (copy_from_iter(writer->buffer + writer->b_off, c, from) != c) {
mutex_unlock(&log->mutex);
return -EFAULT;
}
count += c;
- /* TODO: replace NULL characters with new lines */
- p = strnrchr(writer->buffer + writer->b_off, c, '\n');
+ p = NULL;
+ for (i = 0; i < c; ++i) {
+ char *t = &writer->buffer[writer->b_off + i];
+ if (*t == '\0')
+ *t = '\n';
+ if (*t == '\n')
+ p = t;
+ }
if (p) {
*p++ = '\0';
chunk_len = p - writer->buffer;