David Barr | 3bbaec0 | 2010-08-09 17:39:43 -0500 | [diff] [blame] | 1 | #ifndef LINE_BUFFER_H_ |
| 2 | #define LINE_BUFFER_H_ |
| 3 | |
Jonathan Nieder | d350822 | 2010-10-10 21:39:21 -0500 | [diff] [blame] | 4 | #include "strbuf.h" |
| 5 | |
| 6 | #define LINE_BUFFER_LEN 10000 |
| 7 | |
| 8 | struct line_buffer { |
| 9 | char line_buffer[LINE_BUFFER_LEN]; |
Jonathan Nieder | d350822 | 2010-10-10 21:39:21 -0500 | [diff] [blame] | 10 | FILE *infile; |
| 11 | }; |
Jonathan Nieder | 7e2fe3a | 2011-03-24 23:09:19 -0500 | [diff] [blame] | 12 | #define LINE_BUFFER_INIT { "", NULL } |
Jonathan Nieder | d350822 | 2010-10-10 21:39:21 -0500 | [diff] [blame] | 13 | |
Jonathan Nieder | e5e45ca | 2010-10-10 21:41:06 -0500 | [diff] [blame] | 14 | int buffer_init(struct line_buffer *buf, const char *filename); |
Jonathan Nieder | cb3f87c | 2011-01-02 21:09:38 -0600 | [diff] [blame] | 15 | int buffer_fdinit(struct line_buffer *buf, int fd); |
Jonathan Nieder | e5e45ca | 2010-10-10 21:41:06 -0500 | [diff] [blame] | 16 | int buffer_deinit(struct line_buffer *buf); |
Jonathan Nieder | b1c9b79 | 2011-01-02 21:10:59 -0600 | [diff] [blame] | 17 | |
| 18 | int buffer_tmpfile_init(struct line_buffer *buf); |
| 19 | FILE *buffer_tmpfile_rewind(struct line_buffer *buf); /* prepare to write. */ |
| 20 | long buffer_tmpfile_prepare_to_read(struct line_buffer *buf); |
| 21 | |
Jonathan Nieder | efc749b | 2010-10-10 21:51:21 -0500 | [diff] [blame] | 22 | int buffer_ferror(struct line_buffer *buf); |
Jonathan Nieder | e5e45ca | 2010-10-10 21:41:06 -0500 | [diff] [blame] | 23 | char *buffer_read_line(struct line_buffer *buf); |
Jonathan Nieder | cc193f1 | 2011-01-02 21:06:32 -0600 | [diff] [blame] | 24 | int buffer_read_char(struct line_buffer *buf); |
Jonathan Nieder | 896e4bf | 2011-01-02 21:37:36 -0600 | [diff] [blame] | 25 | size_t buffer_read_binary(struct line_buffer *buf, struct strbuf *sb, size_t len); |
Jonathan Nieder | 26557fc | 2010-12-28 04:26:17 -0600 | [diff] [blame] | 26 | /* Returns number of bytes read (not necessarily written). */ |
| 27 | off_t buffer_copy_bytes(struct line_buffer *buf, off_t len); |
Jonathan Nieder | d234f54 | 2010-10-10 21:44:21 -0500 | [diff] [blame] | 28 | off_t buffer_skip_bytes(struct line_buffer *buf, off_t len); |
David Barr | 3bbaec0 | 2010-08-09 17:39:43 -0500 | [diff] [blame] | 29 | |
| 30 | #endif |