Skip to content

Commit

Permalink
vcs-svn: allow character-oriented input
Browse files Browse the repository at this point in the history
buffer_read_char can be used in place of buffer_read_string(1) to
avoid consuming valuable static buffer space.  The delta applier will
use this to read variable-length integers one byte at a time.

Underneath, it is fgetc, wrapped so the line_buffer library can
maintain its role as gatekeeper of input.

Later it might be worth checking if fgetc_unlocked is faster ---
most line_buffer functions are not thread-safe anyway.

Helpd-by: David Barr <[email protected]>
Signed-off-by: Jonathan Nieder <[email protected]>
  • Loading branch information
jrn committed Feb 26, 2011
1 parent e832f43 commit cc193f1
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 0 deletions.
5 changes: 5 additions & 0 deletions vcs-svn/line_buffer.c
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,11 @@ int buffer_deinit(struct line_buffer *buf)
return err;
}

int buffer_read_char(struct line_buffer *buf)
{
return fgetc(buf->infile);
}

/* Read a line without trailing newline. */
char *buffer_read_line(struct line_buffer *buf)
{
Expand Down
1 change: 1 addition & 0 deletions vcs-svn/line_buffer.h
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ int buffer_init(struct line_buffer *buf, const char *filename);
int buffer_deinit(struct line_buffer *buf);
char *buffer_read_line(struct line_buffer *buf);
char *buffer_read_string(struct line_buffer *buf, uint32_t len);
int buffer_read_char(struct line_buffer *buf);
void buffer_read_binary(struct line_buffer *buf, struct strbuf *sb, uint32_t len);
void buffer_copy_bytes(struct line_buffer *buf, uint32_t len);
void buffer_skip_bytes(struct line_buffer *buf, uint32_t len);
Expand Down

0 comments on commit cc193f1

Please sign in to comment.