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))); |
