diff --git a/bfd.c b/bfd.c index 81ac2b010..66c318c6e 100644 --- a/bfd.c +++ b/bfd.c @@ -168,6 +168,11 @@ static char *strnchr(char *str, unsigned int len, char c) } char *breadline(struct bfd *f) +{ + return breadchr(f, '\n'); +} + +char *breadchr(struct bfd *f, char c) { struct xbuf *b = &f->b; bool refilled = false; @@ -175,7 +180,7 @@ char *breadline(struct bfd *f) unsigned int ss = 0; again: - n = strnchr(b->data + ss, b->sz - ss, '\n'); + n = strnchr(b->data + ss, b->sz - ss, c); if (n) { char *ret; diff --git a/include/bfd.h b/include/bfd.h index 1dd1ea2e0..e9b4d53a4 100644 --- a/include/bfd.h +++ b/include/bfd.h @@ -31,6 +31,7 @@ int bfdopenr(struct bfd *f); int bfdopenw(struct bfd *f); void bclose(struct bfd *f); char *breadline(struct bfd *f); +char *breadchr(struct bfd *f, char c); int bwrite(struct bfd *f, const void *buf, int sz); struct iovec; int bwritev(struct bfd *f, const struct iovec *iov, int cnt);