diff options
-rw-r--r-- | fs/seq_file.c | 20 | ||||
-rw-r--r-- | include/linux/seq_file.h | 1 |
2 files changed, 21 insertions, 0 deletions
diff --git a/fs/seq_file.c b/fs/seq_file.c index 7f40f30c55c5..6c959275f2d0 100644 --- a/fs/seq_file.c +++ b/fs/seq_file.c | |||
@@ -640,6 +640,26 @@ int seq_puts(struct seq_file *m, const char *s) | |||
640 | } | 640 | } |
641 | EXPORT_SYMBOL(seq_puts); | 641 | EXPORT_SYMBOL(seq_puts); |
642 | 642 | ||
643 | /** | ||
644 | * seq_write - write arbitrary data to buffer | ||
645 | * @seq: seq_file identifying the buffer to which data should be written | ||
646 | * @data: data address | ||
647 | * @len: number of bytes | ||
648 | * | ||
649 | * Return 0 on success, non-zero otherwise. | ||
650 | */ | ||
651 | int seq_write(struct seq_file *seq, const void *data, size_t len) | ||
652 | { | ||
653 | if (seq->count + len < seq->size) { | ||
654 | memcpy(seq->buf + seq->count, data, len); | ||
655 | seq->count += len; | ||
656 | return 0; | ||
657 | } | ||
658 | seq->count = seq->size; | ||
659 | return -1; | ||
660 | } | ||
661 | EXPORT_SYMBOL(seq_write); | ||
662 | |||
643 | struct list_head *seq_list_start(struct list_head *head, loff_t pos) | 663 | struct list_head *seq_list_start(struct list_head *head, loff_t pos) |
644 | { | 664 | { |
645 | struct list_head *lh; | 665 | struct list_head *lh; |
diff --git a/include/linux/seq_file.h b/include/linux/seq_file.h index 004f3b3342c5..0c6a86b79596 100644 --- a/include/linux/seq_file.h +++ b/include/linux/seq_file.h | |||
@@ -43,6 +43,7 @@ int seq_release(struct inode *, struct file *); | |||
43 | int seq_escape(struct seq_file *, const char *, const char *); | 43 | int seq_escape(struct seq_file *, const char *, const char *); |
44 | int seq_putc(struct seq_file *m, char c); | 44 | int seq_putc(struct seq_file *m, char c); |
45 | int seq_puts(struct seq_file *m, const char *s); | 45 | int seq_puts(struct seq_file *m, const char *s); |
46 | int seq_write(struct seq_file *seq, const void *data, size_t len); | ||
46 | 47 | ||
47 | int seq_printf(struct seq_file *, const char *, ...) | 48 | int seq_printf(struct seq_file *, const char *, ...) |
48 | __attribute__ ((format (printf,2,3))); | 49 | __attribute__ ((format (printf,2,3))); |