Skip to contentSkip to conversation

seq_file: add function to write binary data

RFC PATCH In review Peter Oberparleiter 1 participant 1 message Apr 21, 2008 VFS

lore
Share & tools
lore
#0 lore raw

RFC PATCH 6/8 seq_file: add function to write binary data

From: Peter Oberparleiter <[email protected]>

seq_write() can be used to construct seq_files containing arbitrary data. Required by the gcov-profiling interface to synthesize binary profiling data files.

---
 fs/seq_file.c            |   12 ++++++++++++
 include/linux/seq_file.h |    1 +
 2 files changed, 13 insertions(+)
fs/seq_file.c +12 -0
Index: linux-2.6.25/fs/seq_file.c
===================================================================
@@ -483,6 +483,18 @@ int seq_puts(struct seq_file *m, const c
 }
 EXPORT_SYMBOL(seq_puts);
 
+int seq_write(struct seq_file *m, const void *s, size_t len)
+{
+	if (m->count + len < m->size) {
+		memcpy(m->buf + m->count, s, len);
+		m->count += len;
+		return 0;
+	}
+	m->count = m->size;
+	return -1;
+}
+EXPORT_SYMBOL(seq_write);
+
 struct list_head *seq_list_start(struct list_head *head, loff_t pos)
 {
 	struct list_head *lh;
include/linux/seq_file.h +1 -0
Index: linux-2.6.25/include/linux/seq_file.h
===================================================================
@@ -37,6 +37,7 @@ int seq_release(struct inode *, struct f
 int seq_escape(struct seq_file *, const char *, const char *);
 int seq_putc(struct seq_file *m, char c);
 int seq_puts(struct seq_file *m, const char *s);
+int seq_write(struct seq_file *m, const void *s, size_t len);
 
 int seq_printf(struct seq_file *, const char *, ...)
 	__attribute__ ((format (printf,2,3)));